htaccess - 如何在我的主域上强制HTTPS,而不是在子域上强制HTTPS

时间:2014-07-06 14:13:14

标签: .htaccess

我刚刚在我的付款页面上添加了以下规则以强制使用HTTPS,因为我不确定如何仅在domain.com而不是user1.domain.com强制使用HTTPS - 不太确定如何这样做,甚至是可能的。

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} /join/payment
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]

所以我添加了该规则并且它运行正常,但是,是否可以在我的完整域上强制使用HTTPS而不是我的任何子域?

我的完整htaccess文件

RewriteEngine on
RewriteCond $1 !^(index\.php|images|js|profile_pictures|fonts|stylesheets|robots\.txt)

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} /join/payment
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [NE,R=301,L]

RewriteCond %{HTTP_HOST} !^((www\.)?)domain\.com [NC] 
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
RewriteRule ^(.*)$ http://domain.com/site/%1$1 [L,NC,P]

RewriteCond %{HTTP_HOST} !^domain\.com$ [NC]
RewriteRule ^((?!site/).*)$ http://domain.com/site/$1?host=%{HTTP_HOST}&page=%{REQUEST_URI} [L,NC,P]

问题

是否可以仅在domain.com上强制使用HTTPS而不在子域上强制使用HTTPS?如果可以在子域上强制使用HTTP而不是HTTPS,我也很想知道如何做到这一点。

1 个答案:

答案 0 :(得分:0)

我认为这应该有效:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} /join/payment
RewriteCond %{HTTP_HOST} !^((www\.)?)domain\.com [NC] 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]

也就是说,添加条件以检查HTTP_HOST是www.domain.com还是domain.com,然后再添加https://