将所有HTTP请求(非www& www,子域)重定向到HTTPS

时间:2014-12-29 13:30:36

标签: apache .htaccess redirect ssl

我希望能够将所有访问者重定向到网站&其子域名为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。

1 个答案:

答案 0 :(得分:0)

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

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

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