我正在将旧网站移动到新域名,我一直在尝试在.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文件夹。但是,我担心如果有人明确访问new.com/main,他们会陷入无限重定向。
非常感谢任何帮助。
答案 0 :(得分: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]