.htaccess RewriteRule, Внешний редирект, QUERY_STRING

Sunrise

Новичок
.htaccess RewriteRule, Внешний редирект, QUERY_STRING

Пишу:

PHP:
RewriteCond %{QUERY_STRING} act=news&page=([0-9]+)
RewriteRule index.php /news/page%1.html [R,L,NC]
Получаю:

PHP:
Location: http://mysite/news/page1.html?act=news&page=1

Как избавиться от дорисовывания %{QUERY_STRING} ? Я ведь не ставил флаг QSA..

Есть идеи? Хоть какие-нибудь идеи.. Очень хочется так сделать..

PS: Про запас висит вариант делать редирект без флага R на внутренний файл, который будет слать нормальный заголовок Location, но это извините - изврат, я своё на велосипедах отъездил.. надеюсь.
 

Sunrise

Новичок
RewriteLog "mylog.txt"
RewriteLogLevel 9

И получаем HTTP 500, другие варианты?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
One more note: You can even create URLs in the substitution string containing a query string part. Just use a question mark inside the substitution string to indicate that the following stuff should be re-injected into the QUERY_STRING. When you want to erase an existing query string, end the substitution string with just the question mark.
 

Sunrise

Новичок
А по конкретнее можно?

Я тут попробувал, не ахти получилось:
RewriteCond %{QUERY_STRING} act=news&page=([0-9]+)
RewriteRule index.php /news/page%1.html [R,L,NC,E=QUERY_STRING:""]

.....

-~{}~ 11.11.07 00:16:

Mr_Max, посибо, я пропустил знак вопроса в конце....

-~{}~ 11.11.07 00:44:

Так, опять проблема...
Код:
[PHP]
RewriteCond %{QUERY_STRING} act=news&page=([0-9]+)
RewriteRule index.php /news/page%1.html? [R,L,NC]

RewriteRule /news/page([0-9]+)\.html index.php?act=news&page=$1 [L,NC][/PHP]
Зацикливается на отправке заголовка Location: /news/pageN.html

Насколько я себе представляю - он почему-то после обработки второго RewriteRule запускает махину рерайтов по-новой.. Как бороться?

Пробывал писать после второго рерайта RewriteEngine Off, что теоретически должно было бы заблокировать повторное исполнение правил - схватил 404, как будто ничего не исполнялось..

PS: По-прежнему есть вариант велосипеда через редирект на php-файл, в котором попробовать проверять, что куда рерайтилось.. или ещё лучше - рерайт всех на пхп файл, и через него всё реализовывать..

Кто решит мою проблему - получит от меня громадный респект и возможно немного WMZ, очень хочется разобраться..
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Sunrise
Укажите ^$

-~{}~ 11.11.07 00:50:

в смысле начало-конец строки шаблона
 

Destruction

Новичок
Сталкивался с подобной проблемой, насколько я понял, это баг в mod_rewrite.

Решил проблему примерно так:
PHP:
RewriteCond %{QUERY_STRING} act=news&page=([0-9]+)
RewriteCond %{QUERY_STRING} !url_rewrited=1
RewriteRule index.php /news/page%1.html? [R,L,NC]

RewriteRule /news/page([0-9]+).html index.php?url_rewrited=1&act=news&page=$1 [L,NC]
Расстановка ограничителей строки не помогает - пробовал, если есть другие идеи по решению проблемы - будет весьма интересно выслушать.

По-сути - проблема у нас на лицо, не работает флаг last|L (скорее всего зависит от версии модуля), и с этим нужно как-то бороться..
 
Сверху