.htaccess规则仅在某些域上强制使用SSL

时间:2017-05-09 20:57:58

标签: wordpress apache .htaccess ssl

我正在运行WordPress多站点网络,允许用户在其网站上选择使用自定义域名。选择不使用自定义域的用户将被分配WP安装的子域(例如:fred.example.com,其中example.com是安装WP多站点网络的URL)。

我为主域配置了通配符SSL,但我没有可用于自定义域名的证书。

我需要的是一个htaccess规则,如果请求是针对example.com*.example.com,则强制流量为https,但如果请求是使用自定义域进行则不会。

它应该如下工作:

  • http://example.com/*https://example.com/*
  • http://foo.example.com/*https://foo.example.com/*
  • http://customdomain.com/*http://customdomain.com/*

1 个答案:

答案 0 :(得分:3)

尝试使用.htaccess文件顶部附近的内容。使用mod_rewrite:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^(?:[a-z0-9-]+\.)?example\.com
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L]

这说明是......对于非HTTPS并且匹配example.com<subdomain>.example.com的所有请求,然后在同一主机上重定向到https://,相同的网址路径。< / p>

请注意,这不允许www.<subdomain>.example.com(我认为您的SSL证书无论如何都不会涵盖)。

只有在您确定其工作正常时,才能将302(临时)更改为301(永久)。