【问题标题】:RewriteCond in httpd.conf to prevent https with wrong domain endinghttpd.conf 中的 RewriteCond 以防止 https 的域结尾错误
【发布时间】:2016-11-18 23:45:26
【问题描述】:

我的域名在搜索引擎中有一个奇怪的问题:

我拥有多个域,比如说:

example.com
example.net
example.org

所有域都指向我的服务器,这就是我在 httpd.conf 文件顶部添加重定向以防止重复内容的原因:

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

对用户来说效果很好。

由于我获得了 .com 域的 ssl 证书,我将所有用户重定向到 https 版本:

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}

对用户也很好。

现在奇怪的问题:出于某种原因,有时搜索引擎会列出 https://example.net/apage.php,因为我没有 .net(和 .org ) 域,当访问者在搜索引擎中点击这些结果时,他们会收到一个浏览器警告,指出与网站的连接不安全。 这非常令人困惑,我无法在浏览器警告出现之前将访问者重定向到正确的 .com 域。

您有想法通过 mod_rewrite 条件或任何解决方法来解决此问题吗?

【问题讨论】:

    标签: mod-rewrite url-rewriting httpd.conf


    【解决方案1】:

    mod_rewrite 通过向浏览器发送重定向来工作,因此它必须首先到达服务器。浏览器显示的警告发生在此之前。

    也许您可以购买多域 SSL 证书。

    如果没有,您可以让合法的搜索机器人不抓取您网站的 .net 和 .org 版本。可能只为这些域包含一个 robots.txt 文件,就像这里描述的那样:Stop Google from indexing

    【讨论】:

    • 什么我不明白,为什么当域结尾不是 .com 时它还没有重定向,无论是否有 https 请求。
    【解决方案2】:

    这组重写将客户端使用的任何主机及其使用的 uri 重定向到 https 中的相同 url:

    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
    

    因此,任何通过这些请求 http://example.net/something 的人最终都会到达 https://example.net/something。如果你的另一组重写是必要的。

    在任何情况下,使用 mod_rewrite 进行这种简单的重定向只会使事情变得不必要地复杂化,当然检查非 SSL 虚拟主机中的 HTTPS 是否关闭是多余的。

    正确的重定向方式仅以 https 中的 example.com 结尾:

    NamedVirtualHost *:80 <-- use this for more vh's present and if this is 2.2.x
    <VirtualHost *:80>
    ServerName example.net
    ServerAlias example.org
    Redirect / https://example.com/
    </VirtualHost>
    
    • 如果 example.com 中有您想为端口 80 提供服务的内容,只需为该 ServerName 添加另一个虚拟主机条目,否则只需在之前的虚拟主机中为 example.com 添加另一个 ServerAlias。

    然后:

    <VirtualHost *:443>
    ServerName example.com
    #.....other directives here
    </VirtualHost>
    

    这样就不会出现将 example.com 以外的任何主机名作为 https 请求的错误。

    所有这些都无需进行不必要的复杂重写。

    【讨论】:

      猜你喜欢
      • 2014-05-29
      • 2011-11-13
      • 1970-01-01
      • 2013-10-29
      • 2018-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      相关资源
      最近更新 更多