【问题标题】:Redirect all HTTP requests (non-www & www, subdomains) to HTTPS将所有 HTTP 请求(非 www 和 www,子域)重定向到 HTTPS
【发布时间】:2015-02-25 16:46:00
【问题描述】:

我希望能够将所有访问者重定向到一个网站及其子域到 HTTPS,如下所示:

其他重定向:

重定向应该是可缓存的 HTTP 301 重定向。使用的配置是 Apache 2.4.10 + mod-spdy,带有 Strict-Transport-Security(加上通配符 SSL 证书)。

目前在 .htaccess 中使用以下内容:

RewriteCond %{SERVER_PORT} !^443
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^ "https://www.example.com%{REQUEST_URI}" [R=301,L]

RewriteCond %{SERVER_PORT} !^443
RewriteCond %{HTTP_HOST} ^sub\.example\.com$
RewriteRule ^ "https://sub.example.com%{REQUEST_URI}" [R=301,L]

我一直在使用 spdycheck.org 对此进行测试,它在主域中运行良好,在子域中我收到以下消息:

允许 HTTP 流量

仍然可以通过 HTTP 访问该网站。 HTTP 不提供任何广泛实施的机制来使用其他 SPDY 等协议。仅使用 NPN 扩展的 SSL/TLS 流量 可以使用 SPDY 进行优化。通过允许 HTTP 流量,本网站是 甚至没有为支持 SPDY 的浏览器提供使用 SPDY 的选择。如果 可能,该网站应将所有 http:// 重定向到 https://, 理想情况下使用可缓存的 HTTP 301 重定向。

有什么好的方法可以做到这一点?如果需要,我也可以修改 httpd.conf。

【问题讨论】:

    标签: apache .htaccess redirect ssl


    【解决方案1】:

    如果您在 httpd.conf 中执行此操作,请输入以下内容:

    <VirtualHost _default_:80>
      RewriteEngine On
      RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NE,L,R=301]
    </VirtualHost>
    

    在您的所有虚拟主机之后,并确保您的其他虚拟主机仅是端口 443。这将使这个重定向全局 http vhost 将每个页面单独重定向到 HTTPS 并提供 301 重定向。

    【讨论】:

    • 我只想要一个在 SSL 上服务的网络服务器上的虚拟主机,例如sub1.mysite.com,使用其顶级 .htaccess。我该怎么做?
    猜你喜欢
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2018-09-26
    • 2015-04-26
    • 1970-01-01
    相关资源
    最近更新 更多