2010-08-09 1 views
2

Я пытаюсь сопоставить кучу перенаправлений для моего сайта, в основном перемещенных в другую папку на сервере. Мне нужно сделать 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 должны оставаться нетронутыми. Как я могу это сделать?Временное перенаправление 302 с выражением соответствия .htaccess и mod-rewrite

Я пробовал следующее в файле .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] 

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

ответ

2

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

RewriteEngine On 

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

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

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

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

Это прекрасно работает! Большое спасибо. Должен ли я добавить R = 302 в последнюю строку? Это временная переадресация для Google и поисковых систем. На следующей неделе ссылки будут перенаправлены на корневой сервер. Также, что я должен сделать, чтобы восстановить нормальное перенаправление? – Landitus

+0

Без проблем, рад слышать, что он работает. Это необязательно, так как значением по умолчанию для 'R' является 302. Когда вы хотите переключиться обратно, вам просто нужно изменить правило. Я отредактирую ответ, чтобы включить то, что будет выглядеть. –

+0

Великий Тим, ты был очень полезным! – Landitus