![]() |
Не работает mod_rewrite
Есть такая задача:
надо из адреса /folder/text?a=1 сделать /folder/?pg=text&a=1 причём параметр a может отсутствовать. Делаю так: Код:
RewriteEngine on |
RewriteEngine on
Options +FollowSymlinks RewriteBase / RewriteCond %{REQUEST_URI} ^/forder/text\?(.*)$ RewriteRule .* /folder/?pg=text&%1 [L] Поидее так должно работать на вскидку. А у Вас, без проверки на то что УРЛ уже перезаписывался, просто идет зацикливание преобразования бесконечное. |
Цитата:
Цитата:
Кстати, если в последней строке вместо ([^/?]+) поставить ([a-z]+), то всё работает. Только мне нужно, чтобы были все символы кроме слэша и вопроса. |
Self Author
Знак вопроса - системный символ в регулярных выражениях, попробуйте его экранировать. |
Цитата:
Так работает: Код:
RewriteCond %{REQUEST_URI} ^/[^/]+/[^/]+$Код:
RewriteCond %{REQUEST_URI} ^/[^/]+/[^/]+$ |
Цитата:
Попробуйте что-то вроде: Код:
RewriteCond %{REQUEST_URI} !^\?pg=$ |
поставить debug один раз и посмотреть что именно раскрывается и где виснет разве трудно? регулярное выражение у вас в RewriteRule относительно правильное, а вот RewriteCond бессмысленный абсолютно - не надо дублировать RewriteRule, зачем два раза делать? :)
Я бы сделал типа RewriteCond $2 !^$ RewriteRule ^/([^/]+)/([^/?]+)$ /$1/?pg=$2&%{QUERY_STRING} [L] будет выполняться только если $2 непустой. |
Заработало!
Рабочий вариант оказался такой: Код:
RewriteCond %{QUERY_STRING} !pg= |
| Часовой пояс GMT +4, время: 15:00. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.