特殊301重定向规则

时间:2013-09-03 21:01:25

标签: .htaccess redirect mod-rewrite

我正在将旧网站移动到新域名,我一直在尝试在.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,他们会陷入无限重定向。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这是DOCUMENT_ROOT/.htaccessnew.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/.htaccessold.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]