我使用通配符SSL获得了一个网站example.com
。因此,每当我尝试使用子域abc.example.com
时,它都会继续将其重定向回example.com
。我该如何停止重定向?我看到在.htaccess
文件中添加一个条件可以解决问题,但是我找到的所有答案都有不同的条件,我担心如果我改错了它会弄乱整个网站。
这是来自子域名的.htaccess
文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* - [E=CANONICAL:http://abc.example.com%{REQUEST_URI},NE]
RewriteCond %{HTTPS} =on
RewriteRule .* - [E=CANONICAL:https://abc.example.com%{REQUEST_URI},NE]
</IfModule>
那么我应该添加什么条件才能停止重定向?如果它有帮助,两个网站都在使用WordPress,我在# BEGIN W3TC CDN
下找到了这个代码。
答案 0 :(得分:0)
重写规则看起来很好,如果愚蠢(只是强制执行SSL),所以我想知道这是否是实际重定向浏览器的确切代码。我怀疑它正在进行重定向的Wordpress;您是否复制了数据库而忘记更新新数据库中的相应行?当我需要移动(在您的情况下,复制)Wordpress网站时,我通常使用此脚本:
ref
根据需要更改前两行/变量,并针对问题站点的数据库运行该行。
其次,除非您想将人员重定向到SET @oldsite='http://example.com';
SET @newsite='https://abc.example.com';
UPDATE wp_links SET link_url = replace(link_url, @oldsite, @newsite);
UPDATE wp_options SET option_value = replace(option_value, @oldsite, @newsite) WHERE option_name IN ('home', 'siteurl');
UPDATE wp_posts SET guid = replace(guid, @oldsite, @newsite);
UPDATE wp_posts SET post_content = replace(post_content, @oldsite, @newsite);
UPDATE wp_postmeta SET meta_value = replace(meta_value, @oldsite, @newsite);
,否则不要对主机进行硬编码;使用客户端/浏览器作为初始请求的一部分发送的abc
标头:
Host
与此同时,请考虑在今天的日期和时间执行SSL:
RewriteRule .* - [E=CANONICAL:https://%{HTTP_HOST}%{REQUEST_URI},NE]