Рискуя тем, чтобы походить на побитый рекорд (потому что я предложил аналогичное решение здесь), это походит на другую ситуацию, в которой программный RewriteMap работал бы хорошо.
В Вашей конфигурации Apache, чем-то как:
RewriteMap rewriter prog:/path/to/script
RewriteRule ^(.*) %{rewriter:$1} [L]
И в Вашем сценарии, чем-то как:
#!/perl
$| = 1;
# /bar/ca/marina-del-ray/first-last.html
while () {
my @parts = split /\//;
my @name = split /-/, $parts[4];
$name[1] =~ s/\.html$//;
grep { s/-/+/g } @parts;
print "/$parts[1]/?searchState=$parts[2]&searchCity=$parts[3]&",
"firstName=$name[0]&lastName=$name[1]", "\n";
}
Это выполнит точно преобразование URL, которое Вы запросили. Обратите внимание на то, что это - просто пример кода - действительное решение должно было бы быть намного более устойчивым.
Обычно, getent shadow
ничего не возвратит, если Вы не корень.
Необходимо изменить конфигурацию PAM в/etc/pam.d для использования mysql модуля PAM.
После этого Вы сможете изменить пароли с нормальным passwd
команда.