Htaccess for http://在子域名上

时间:2015-07-30 18:40:11

标签: apache .htaccess mod-rewrite cpanel

我目前有一个网站,其中有一个工作.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

1 个答案:

答案 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]