【问题标题】:Stop wildcard SSL redirecting subdomain to main domain停止通配符 SSL 将子域重定向到主域
【发布时间】:2018-04-08 04:32:59
【问题描述】:

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

【问题讨论】:

  • ServerFault.com 是询问有关专业网络服务器配置问题的更好地方。

标签: php wordpress .htaccess ssl redirect


【解决方案1】:

重写规则看起来很好,如果很傻(只是强制执行 SSL),所以我想知道这是否是实际重定向浏览器的确切代码。我怀疑是 Wordpress 进行了重定向;您是否复制了数据库并忘记更新新数据库中的相应行?当我需要移动(在你的情况下,复制)一个 Wordpress 网站时,我通常使用这个脚本:

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 标头:

    RewriteRule .* - [E=CANONICAL:https://%{HTTP_HOST}%{REQUEST_URI},NE]

同时,考虑在当今时代强制实施 SSL:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 2015-06-05
    • 1970-01-01
    • 2013-10-13
    • 2014-05-29
    • 2012-07-08
    相关资源
    最近更新 更多