Проблема с правилом перезаписи URL-адреса htaccess, строка запроса добавляется к результирующему URL-адресу

У меня есть набор правил перезаписи, которые должны обрабатывать URL-адрес с параметрами от 1 до 5. Таким образом, мой URL может выглядеть так: www.site.com/topic1/page1 или www.site.com/topic1/sub1/page1.

Вот мои правила в этом примере:

RewriteRule ^([^/.]+)/?$ /staticpages/process-selection.php?param1=$1 [E=rwdone:yes,L]
RewriteRule ^([^/.]+)/([^/.]+)/?$ /staticpages/process-selection.php?param1=$1&param2=$2 [E=rwdone:yes,L]
RewriteRule ^([^/.]+)/([^/.]+)/([^/]+)/?$ /staticpages/process-selection.php?param1=$1&param2=$2&param3=$3 [E=rwdone:yes,L]
RewriteRule ^([^/.]+)/([^/.]+)/([^/]+)/([^/]+)/?$ /staticpages/process-selection.php?param1=$1&param2=$2&param3=$3&param4=$4 [E=rwdone:yes,L]
RewriteRule ^([^/.]+)/([^/.]+)/([^/]+)/([^/]+)/([^/]+)/?$ /staticpages/process-selection.php?param1=$1&param2=$2&param3=$3&param4=$4&param5=$5 [E=rwdone:yes,L]

Чтобы усложнить ситуацию, у меня может быть перенаправление 301 со старого URL-адреса на один из этих новых URL-адресов. Таким образом, «/topic1/page1/oldpage» может сначала быть перенаправлено на «/topic1/page1/newpage».

По какой-то причине, когда происходит перезапись, URL-адрес, который отображается в браузере, имеет правильный URL-адрес, но со старыми переменными, добавленными к URL-адресу следующим образом: /topic1/page1/newpage?param1=page1¶m2=oldpage

Мне интересно, есть ли способ избежать этой ситуации. что, черт возьми, я делаю неправильно здесь.


person Waylien    schedule 02.08.2010    source источник


Ответы (1)


mod_alias работает позже, чем mod_rewrite, а флаг [L] действителен только для mod_rewrite правил, а не mod_alias (т. е. эти правила по-прежнему будут применяться к исходному URL-адресу, но, как ни странно, с новой строкой запроса). Чтобы разрешить mod_alias видеть уже переписанный URL-адрес, используйте флаг [PT] или, в качестве альтернативы, попробуйте выполнить все перезаписи/перенаправления с помощью mod_rewrite.

person Wrikken    schedule 02.08.2010
comment
Большое спасибо за ваш вклад. Мне удалось решить проблему, изменив код перенаправления 301 на RewriteRule ^url [R=301,L]. Наконец-то я не вижу странных параметров, добавленных к URL-адресам моего браузера. - person Waylien; 12.08.2010