.htaccess重定向到新域,其中www和非www以及https和非https的路径完好无损

时间:2013-10-31 10:19:03

标签: regex apache .htaccess mod-rewrite dns

基本上我需要一个.htaccess文件,它会将所有流量重定向到我们的新域。它需要在以下条件下工作:

http://www.olddomain.com/path/file.php => http://www.newdomain.com/path/file.php
https://www.olddomain.com/path/file.php => http://www.newdomain.com/path/file.php

(请注意,在上述情况下,https重定向到http - 这不是问题)

此外:

http://olddomain.com/path/file.php => http://newdomain.com/path/file.php
https://olddomain.com/path/file.php => http://newdomain.com/path/file.php

我几乎得到了它的工作,首先将https版本的www.olddomin.com重定向到http版www.olddomain.com,然后重定向到新域的http版本,我遇到的问题是非{www}版https://olddomain.com,重定向到http://olddomain.com然后停止。

我使用的代码是:

RewriteEngine On
RewriteBase /

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP_HOST} ^www\.olddomain\.com$
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

除了https://olddomain.com/path/file.php只是重定向到http://olddomain/path/file.php并停止并且没有重定向到http://newdomain.com/path/file.php

之外,这几乎有效

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

您只需要在olddomain的DOCUMENT_ROOT/.htaccess文件中使用单一规则

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$ [NC]
RewriteRule ^ http://%1newdomain.com%{REQUEST_URI} [R=301,L,NE]