правило для mod_rewrite в Apache
прямые слэши в эту группу входят разве?
[a-zA-Z0-9-]
опечатался, не входят. скопировал не тот эксперимент. только со слэшом тоже не работает
, не находишь?
RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)\?(.*)$ script.php?page=$1/$2/$3&$4 [L]
неа Это я в примере привел 3 уровень вложенности. Если бы он был фиксирован - да, супер. А как для произвольного уровня вложенности?
([a-zA-Z0-9-\/]+)
этот вариант работает не так, как нужно. Я даже не знаю, что там происходит, но у меня впечатление, что там правило применяется два раза. То есть он сначала получает то, что надо. А потом еще раз преобразовывает и получает полную билиберду. Короче так, как надо оно не работает
([[a-zA-Z0-9-]\/]+)
З.Ы. Я еще символ подчеркивания добавляю
RewriteRule ([[a-zA-Z0-9-]\/]+) runExecutable.php?page=$1 [L]
не работает
#!/usr/bin/perl -w
my $a = "a/b/c/d/e/f?param=parameter#anchor";
$a =~ /^([a-zA-Z0-9-\/]+[a-zA-Z0-9-]+)\?param\=(.*)#.*$/i;
print $1.$2."\n"; #первая переменная
print $3; #вторая переменная
работает:
a/b/c/d/e/f
parameter
гы. я проверяю в пхп - там у меня все замечательно работает. а вот в апаче - нет. там походу кривой какой-то движок регулярных выражений стоит. или я что-то не понимаю в его философии (
Ни хрена не соображаю...
RewriteCond "%{REQUEST_FILENAME}" !-f
проверяет наличие _файла_, на гет-запрос после имени ему пох
точно. я ступил... Спасибо
Оставить комментарий
oleg1331
помогите, пожалуйста. не могу разобраться, почему правило не работает.Задача: преобразовать урлы вида a/b/c?name=var&name1#ggg в script.php?page=a/b/c&name=var&name1#ggg
Я попробовал так:
Однако, оно на отрез отказывается работать, хотя регексп (например, в php) делает все правильно.