2013-09-03 3 views
0

Я перемещаю старый сайт в новый домен, и я пытался сделать 301 переадресацию в файле .htaccess для размещения правил переадресации ниже, но я думаю, что я в тупике ,Специальные правила 301 переадресации

new.com  --> new.com/main 
www.new.com --> new.com/main 

old.com  --> new.com/main 
www.old.com --> new.com/main 

old.com/* --> new.com/* 
www.old.com/* --> new.com/* 

sub.old.com/* --> sub.new.com/* 

Для первой части, кажется, что этот код работает:

# RewriteCond %{HTTP_HOST} ^new\.com$ [OR] 
# RewriteCond %{HTTP_HOST} ^www\.new\.com$ 
# RewriteRule ^/?$ "http\:\/\/new\.com\/main" [R=301,L] 
# RewriteRule ^$ http://www.new.com/main [R=301,L] 

Помещенный просто, если браузер запрашивает любую страницу, кроме домашней страницы old.com домена, я хотел бы, чтобы идти на новый сайт. Если кто-то посетит сайт new.com, они будут перенаправлены в/главную папку. Тем не менее, я беспокоюсь, что если кто-либо когда-нибудь явно посетит сайт new.com/main, они попадут в бесконечное перенаправление.

Любая помощь будет высоко оценена.

ответ

0

Это код, необходимый на DOCUMENT_ROOT/.htaccess на new.com:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^(www\.)?new\.com$ [NC] 
RewriteRule ^$ http://new.com/main [R=301,L] 

Это код, необходимый на DOCUMENT_ROOT/.htaccess на old.com:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^(www\.)?old\.com$ [NC] 
RewriteRule ^$ http://new.com/main [R=301,L] 

RewriteCond %{HTTP_HOST} ^(www\.)?old\.com$ [NC] 
RewriteRule ^(.+)$ http://new.com/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^([^.]+)\.old\.com$ [NC] 
RewriteRule ^$ http://%1.new.com/main [R=301,L] 

RewriteCond %{HTTP_HOST} ^([^.]+)\.old\.com$ [NC] 
RewriteRule ^(.+)$ http://%1.new.com/$1 [R=301,L]