Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 使用htaccess将多个域(http https www和非www)重定向到新域_Apache_.htaccess_Redirect_Mod Rewrite_Http Status Code 301 - Fatal编程技术网

Apache 使用htaccess将多个域(http https www和非www)重定向到新域

Apache 使用htaccess将多个域(http https www和非www)重定向到新域,apache,.htaccess,redirect,mod-rewrite,http-status-code-301,Apache,.htaccess,Redirect,Mod Rewrite,Http Status Code 301,我有3个不同的域(具有两个不同的TLD),我希望我的所有域只重定向到一个域(包括所有格式的http https www或非www)->https://www.newdomain.com 我的所有域名: http://olddomain.net http://www.olddomain.net https://olddomain.net https://www.olddomain.net http://olddomain2.com http://www.olddomain2.com htt

我有3个不同的域(具有两个不同的TLD),我希望我的所有域只重定向到一个域(包括所有格式的http https www或非www)->
https://www.newdomain.com

我的所有域名:

http://olddomain.net
http://www.olddomain.net 
https://olddomain.net
https://www.olddomain.net 

http://olddomain2.com
http://www.olddomain2.com 
https://olddomain2.com
https://www.olddomain2.com

http://newdomain.com
http://www.newdomain.com 
https://newdomain.com
https://www.newdomain.com
因此,所有这些域都必须重定向到:
https://www.newdomain.com

我尝试了htaccess的许多不同配置,但我没有处理所有重定向。到目前为止,我发现:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain\.net$ [OR]
RewriteCond %{HTTP_HOST} ^olddomain2\.com$ [OR]
RewriteCond %{SERVER_PORT} 80 [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.newdomain.com/$1 [L,NE,R=301]
但它不能处理所有的变化。我认为这让谷歌机器人很困惑,因为我的新主url没有索引


如何修改我的htaccess,使其能够处理所有可能的问题?

根据您展示的示例,请尝试以下内容。请确保在检查URL之前清除浏览器缓存。如果您的
HTTP\u主机
不等于您的新域,我会检查条件,但我担心它也会触及您不想重定向到新域的其他域

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

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

可以使用以下单个重定向规则完成此操作:

重新编写引擎打开
重写cond%{HTTPS}!在[或]
重写cond%{HTTP_HOST}^www\.newdomain\.com$[NC]
重写规则^https://www.newdomain.com%{REQUEST_URI}[NE,R=301,L]

您是否有其他指向同一目录的域不受此影响?否则,我会改变逻辑-如果主机未
www.newdomain.com
或HTTPS已关闭,则重定向。