Временный редирект 302 с выражением .htaccess и mod-rewrite - PullRequest
2 голосов
/ 09 августа 2010

Я пытаюсь сопоставить несколько перенаправлений для моего сайта, которые в основном перемещены в другую папку на сервере. Мне нужно заставить http://www.site.com/index.php?page=anypage перейти к http://www.site.com/newfolder/index.php?page=anypage. Дело в том, что http://www.site.com/index.php и http://www.site.com/index.php?page=home должны остаться нетронутыми. Как мне это сделать?

Я пытался сделать следующее в файле .htaccess , но боюсь ошибиться. Я действительно не знаю, как это проверить.

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^/index.php?page=(.*)$ http://www.site.com/newfolder/index.php?page=$1 [R=302,NC]
RewriteRule ^/index.php?page=home http://www.site.com/index.php?page=home [R=302,NC,L]

Теперь я подумал, что это временно, поэтому я должен знать, как отменить это! На следующей неделе ссылки придется снова перенаправить на корневой сервер. Кроме того, что я должен сделать, чтобы восстановить нормальное перенаправление ??

1 Ответ

3 голосов
/ 10 августа 2010

Если я правильно следовал вашему сценарию, вы хотите что-то вроде этого:

RewriteEngine On

RewriteCond %{QUERY_STRING} !=""
RewriteCond %{QUERY_STRING} !page=home
RewriteRule ^index.php /newfolder/index.php [R,L]

Что касается тестирования, я предпочитаю опробовать правила на локальном тестовом сервере. Если у вас есть полный контроль над сервером (как это происходит локально), есть некоторые директивы mod_rewrite, которые помогают вам регистрировать происходящее и могут помочь при отладке. Документация по модулю содержит более подробную информацию об этом.

Редактировать: Если вы хотите переключиться назад, измените RewriteRule выше так:

RewriteRule ^newfolder/index\.php /index.php [R,L]
...