目前我有两个领域:example.pl和示例网站。
我试图确保它们都分别转到https://example.pl或http://example.com,但我遇到了一个问题(或者我的浏览器还记得旧状态)。
我有这个代码的时刻:
RewriteCond %{ENV:HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^example.pl [NC]
RewriteRule ^ https://example.pl%{REQUEST_URI} [L,NE,R=301]
RewriteCond %{ENV:HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,NE,R=301]
但我不确定它是否工作正常(http://example.com不知何故重定向到https://example.pl),也不确定这是否可以在一个代码块中完成?
1条答案
按热度按时间6ju8rftf1#
这两种情况都不可能成功,因此如果通过HTTPS请求www子域,规则最终将失败(不执行任何操作)。
如果只有两个域,那么您需要修改第三个条件以允许可选的
www
子域,并使用regex * alternate * 匹配这两个域。例如:
%1
反向引用匹配最后匹配的RewriteCond
指令中捕获的子模式,即example.com
或example.pl
。重要的是第三个条件总是成功的,因为第三个条件的唯一目的是捕获域名。您需要清除浏览器缓存,因为任何(错误的)301(永久的)重定向都将被浏览器缓存。
但我不确定它是否工作正常(
http://example.com
不知何故重定向到https://example.pl
),也不确定这是否可以在一个代码块中完成?这是不可能的规则,你已经张贴。这是可能的,你看到的缓存重定向从一个较早的(错误的)* 301永久 * 重定向。
有关 * 任意域 * 解决方案,请参见my earlier answer。