Проблема с правилом перезаписи URL htaccess, строка запроса добавляется к полученному URL - PullRequest
1 голос
/ 02 августа 2010

У меня есть набор правил перезаписи, которые должны обрабатывать 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 / стр.1 / NewPage? Param1 = стр.1 & param2 = oldpage

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

1 Ответ

0 голосов
/ 02 августа 2010

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

...