如何防止子域重定向到https - htaccess?

时间:2017-04-23 15:40:38

标签: apache .htaccess redirect mod-rewrite url-rewriting

我正在尝试解决如何将所有http实例重定向到https://但排除子域名。

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

例如, domain.example.co 应保持原样,不会重定向到https://

应将

example.co example.co/sub/sub 重定向到https://

我尝试过更改RewriteRule:

RewriteRule ^$ https://example.co/$1 [R,L]

这会保留子域名,但对example.co下的子目录没有影响 - 例如example.co/sub/sub。

如何从http重定向到https但排除所有子域?

注意

我还有一个重写规则,它将子域指向其目录而不更改URL:

RewriteCond %{HTTP_HOST} ^(.*)\.example\.co [NC]
RewriteRule ^(.*)/?$ http://example.co/%1/$1 [P]

sub.example.co会显示example.co/sub,但网址不会更改

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{HTTP_HOST} ^(.+\.)?domain\.com$
RewriteRule ^(.*)$ https://%1domain.com/$1 [R,L]

或者这个:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{HTTP_HOST} ^(www\.)?sub\.domain\.com$
RewriteRule ^(.*)$ https://sub.domain.com/$1 [R,L]

注意:使用域名

替换sub子域和域

享受它; - )

答案 1 :(得分:0)

尝试以下我假设你没有使用www附加到主机。

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^example.co [NC]
RewriteRule ^(.*)$ https://example.co/$1 [L,R=301,QSA]

RewriteCond %{HTTP_HOST} ^(.*)\.example\.co [NC]
RewriteRule ^(.*)/?$ http://example.co/%1/$1 [P]
ProxyPassReverse / http://example.co/