Regex .htaccess重定向到新域,www和非www以及https和非https的路径保持不变

Regex .htaccess重定向到新域,www和非www以及https和非https的路径保持不变,regex,apache,.htaccess,mod-rewrite,dns,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-这不是问题)

基本上,我需要一个.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-这不是问题)

此外:

首先,我将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


任何帮助都将不胜感激。

您只需在olddomain的
文档\u ROOT/.htaccess
文件中使用此单一规则即可:

RewriteEngine On

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

  • NC
    -忽略大小写
  • L
    -最后一个
  • R=301
    -将
    301
    状态发送到浏览器
  • NE
    -禁止转义
  • %1
    -是我们在
    RewriteCond
    的第一个
    (…)
    中捕获的值。这将是
    www
    或空白

先生,您是位绅士,也是位学者——谢谢您,您的款待真不错!=)非常欢迎你,很高兴你成功了。这个问题真的很有趣。在测试过程中,最好使用[R=302,L,NE],只有在一切正常后才将其更改为[R=301,L,NE],如果您对标志和修饰符的作用进行了评论,expectedIt将是一个更好的答案!教一个人钓鱼之类的。。
RewriteEngine On

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