0

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

任何帮助将非常感激。

4

1 回答 1

0

这是DOCUMENT_ROOT/.htaccesson所需的代码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/.htaccesson所需的代码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]
于 2013-09-03T21:22:52.753 回答