我目前有一个网站,其中有一个工作.htaccess强制https://www访问该网站的用户。我最近创建了一个子域" demo.example.com",因为我的主要网站都是" example.com"和" example.com/demo /"使用相同CMS的不同实例,并且两个安装之间混合使用cookie(因此使用子域可以解决这个问题)。
我试图进行以下设置
http://example.com => https://www.example.com
http://www.example.com => https://www.example.com
http://demo.example.com => http://demo.example.com
但我得到了
http://example.com => https://www.example.com
http://www.example.com => https://www.example.com
http://demo.example.com => https://demo.example.com
由于我的证书不包含子域名,因此我的访问者使用SSL警告会将访问者“demo.example.com
”。
我已经查看了其他stackoverflow问题,虽然这个question似乎很有希望,但我不希望希望重定向我的子域中的访问者到它的子目录。
这是我.htaccess的相关部分
# BEGIN HTTPS Redirection Plugin
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
# END HTTPS Redirection Plugin
答案 0 :(得分:1)
在主域的根.htaccess中,您可以拥有以下规则:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(?:www\.)?(example\.com)$ [NC]
RewriteCond %{HTTPS} off
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L,NE]