.htaccess在强制HTTPS之前重定向子域名?

时间:2014-11-11 18:46:42

标签: apache .htaccess mod-rewrite redirect

我的网站上有以下规则:

我现在遇到的问题是,当有人前往http://user.domain.com时,他们会被重定向到https://user.domain.com,然后是不安全的,而不是https://www.domain.com/file.php?user=user

我该如何解决这个问题?

这是.htaccess内容:

RewriteEngine On

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteRule ^.*$ - [L]
RewriteCond %{HTTP_HOST} ^(.*?)\.(www\.)?domain\.com$ [NC]
RewriteRule ^.*$ https://www.domain.com/file.php?user_id=%1 [L]

我还尝试将%{HTTP_HOST}更改为%{HTTPS_HOST},最终遇到了同样的问题。

2 个答案:

答案 0 :(得分:1)

尝试:

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteRule ^.* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(.*?)\.(www\.)?domain\.com$ [NC]
RewriteRule ^.*$ https://www.domain.com/file.php?user_id=%1 [L]

答案 1 :(得分:0)

您可以使用以下规则:

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com$ [NC]
RewriteRule ^ /file.php?user_id=%1 [L,QSA]