Замените один URL другим с помощью mod_rewrite - PullRequest
0 голосов
/ 14 декабря 2010

Текущая ситуация

RewriteRule ^$ /index.php?page=Portal [R=301,L]

Когда пользователь заходит на сайт и переходит на «корневой» URL домена (RegExp «^ $»), он перенаправляется на /index.php?page=Portal

.

Это работает.

Теперь у нас есть «index.php? Page = Portal» в индексе Google, и у нас есть тонны ссылок на эту страницу в различных местах по всему Интернету.

Намеченная новая ситуация

Мы хотим, чтобы страница портала отображалась в корневом URL - без перенаправления. Это не проблема ... Просто удалите перенаправление:

RewriteRule ^$ /index.php?page=Portal [L]

Теперь мы также хотим, чтобы старый URL перенаправлял на новое место, и вот где я терплю неудачу, но не могу понять, почему:

RewriteCond %{QUERY_STRING} ^page=Portal$
RewriteRule ^index.php$ http://www.jacatu.de/? [R=301,L]

Как только я сделаю это, я попаду в цикл перенаправления:

alt text

(Когда я изменяю на 302 в .htaccess, я вижу 302 перенаправления, поэтому кажется, что цикл действительно вызван mod_rewrite)

Но почему? Все правила помечены как last [L] - поэтому я думаю, что могу исключить, что правило 2 вызывает правило 1.

1 Ответ

0 голосов
/ 14 декабря 2010

Я включил ведение журнала, как предложено Jacek Prucia , и на самом деле это выглядело, как будто [L] в URL не останавливает выполнение. Оба правила были обработаны.

Теперь я изменил первое переписывание на

RewriteRule ^$ /index.php?page=Portal&int=1 [L]

чтобы он не соответствовал RewriteCond внутреннего перезаписи, поэтому теоретически моя проблема решена. Хотелось бы узнать, почему он сделал то, что сделал. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...