| imho.ws |
![]() |
|
|
|
# 1 |
|
Junior Member
Регистрация: 07.02.2006
Адрес: Ростов-на-Дону
Сообщения: 52
![]() |
Не работает mod_rewrite
Есть такая задача:
надо из адреса /folder/text?a=1 сделать /folder/?pg=text&a=1 причём параметр a может отсутствовать. Делаю так: Код:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_URI} ^/[^/]+/[^/?]+.*$
RewriteRule ^([^/]+)/([^/?]+).*$ /$1/?pg=$2&%{QUERY_STRING} [L]
|
|
|
|
|
# 2 |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
RewriteEngine on
Options +FollowSymlinks RewriteBase / RewriteCond %{REQUEST_URI} ^/forder/text\?(.*)$ RewriteRule .* /folder/?pg=text&%1 [L] Поидее так должно работать на вскидку. А у Вас, без проверки на то что УРЛ уже перезаписывался, просто идет зацикливание преобразования бесконечное.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
# 3 | ||
|
Junior Member
Регистрация: 07.02.2006
Адрес: Ростов-на-Дону
Сообщения: 52
![]() |
Цитата:
Цитата:
Кстати, если в последней строке вместо ([^/?]+) поставить ([a-z]+), то всё работает. Только мне нужно, чтобы были все символы кроме слэша и вопроса. |
||
|
|
|
|
# 5 | |
|
Junior Member
Регистрация: 07.02.2006
Адрес: Ростов-на-Дону
Сообщения: 52
![]() |
Цитата:
Так работает: Код:
RewriteCond %{REQUEST_URI} ^/[^/]+/[^/]+$
RewriteRule ^([^/]+)/([a-z]+)$ /$1/?pg=$2&%{QUERY_STRING} [L]
Код:
RewriteCond %{REQUEST_URI} ^/[^/]+/[^/]+$
RewriteRule ^([^/]+)/([^/]+)$ /$1/?pg=$2&%{QUERY_STRING} [L]
(опытным путём обнаружил).
|
|
|
|
|
|
# 6 | |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Вы читали как работает преобразование вообще??Попробуйте что-то вроде: Код:
RewriteCond %{REQUEST_URI} !^\?pg=$
RewriteRule ^([^/]+)/([a-z]+)$ /$1/?pg=$2&%{QUERY_STRING} [L]
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
|
# 7 |
|
Junior Member
Регистрация: 28.11.2005
Адрес: питер
Сообщения: 160
![]() ![]() ![]() ![]() ![]() |
поставить debug один раз и посмотреть что именно раскрывается и где виснет разве трудно? регулярное выражение у вас в RewriteRule относительно правильное, а вот RewriteCond бессмысленный абсолютно - не надо дублировать RewriteRule, зачем два раза делать?
![]() Я бы сделал типа RewriteCond $2 !^$ RewriteRule ^/([^/]+)/([^/?]+)$ /$1/?pg=$2&%{QUERY_STRING} [L] будет выполняться только если $2 непустой. |
|
|
|
|
# 8 |
|
Junior Member
Регистрация: 07.02.2006
Адрес: Ростов-на-Дону
Сообщения: 52
![]() |
Заработало!
Рабочий вариант оказался такой: Код:
RewriteCond %{QUERY_STRING} !pg=
RewriteRule ^([^/]+)/([^/]+)$ /$1/?pg=$2&%{QUERY_STRING} [L]
|
|
|