停止通配符SSL将子域重定向到主域

时间:2017-10-26 17:22:48

标签: php wordpress .htaccess ssl redirect

我使用通配符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下找到了这个代码。

1 个答案:

答案 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]