Apache “的正确语法是什么?”;如果主机不是foo,则重定向到bar";在.htaccess文件中?

Apache “的正确语法是什么?”;如果主机不是foo,则重定向到bar";在.htaccess文件中?,apache,.htaccess,Apache,.htaccess,这个网站有很多额外的域名(注意:这些是而不是子域;例如,其中一个是)所有者(或者搜索引擎优化人员)想要重定向到主域名。我没有一一列出,而是尝试了以下内容: RewriteCond %{HTTPS_HOST} !^masetti\.fi$ RewriteRule ^(.*)$ https://masetti.fi/$1 [R=301,L] 但是,这会创建一个重定向循环。为什么呢?这不会产生服务器错误,因此对于这一部分,语法是正确的,但它不符合我的要求。您很接近,但犯了一个逻辑错误。看看这个: R

这个网站有很多额外的域名(注意:这些是而不是子域;例如,其中一个是)所有者(或者搜索引擎优化人员)想要重定向到主域名。我没有一一列出,而是尝试了以下内容:

RewriteCond %{HTTPS_HOST} !^masetti\.fi$
RewriteRule ^(.*)$ https://masetti.fi/$1 [R=301,L]

但是,这会创建一个重定向循环。为什么呢?这不会产生服务器错误,因此对于这一部分,语法是正确的,但它不符合我的要求。

您很接近,但犯了一个逻辑错误。看看这个:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^masetti\.fi$
RewriteRule ^(.*)$ https://masetti.fi/$1 [R=301]
另一种选择是:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^masetti\.fi$
RewriteRule ^ https://masetti.fi%{REQUEST_URI} [R=301]
RewriteCond
稍有改动:您要检查的变量是
%{HTTP\u HOST}
,而不是不存在的
%{HTTPS\u HOST}


PS:从302重定向开始是个好主意,只要一切正常,就把它改成301重定向。这可以防止客户端缓存出现问题

在Chrome开发工具中测试,禁用缓存,并在网络选项卡中签入301/302重定向URL。感谢302提示。我不知道。我澄清了我的问题,这些不是我们谈论的子域。重新阅读你的问题,我的答案,我意识到我的答案完全是胡说八道,不管你的问题是否准确。我又做了一个小小的改动来更新。如果变量名是这里的问题,对我们俩来说都会有点尴尬…我明白了。你的意思是说%{HTTPS_HOST}不存在吗?是的,没错。抱歉,在火车上,无法测试。