停止.htaccess将所有内容重定向到

时间:2013-02-02 14:02:06

标签: apache .htaccess mod-rewrite

我已设置我的.htaccess来重定向来自http://subdomain.domain.com.tld,http://www.subdomain.domain.com.tld和http://domain.com.tld/folder的请求(包含子域内容的文件夹)到https://subdomain.domain.com.tld,因此我始终使用subdomain.domain.com.tld的单域SSL证书设置。

我的问题是http://domain.com.tld也重定向到https://subdomain.domain.com.tld。我该如何阻止它?

RewriteOptions inherit
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^subdomain.domain\.com.tld
RewriteRule ^(.*)$  https://subdomain.domain.com.tld/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^.*$
RewriteRule ^folder$ "https\:\/\/subdomain\.domain\.com\.tld\/" [R=301,L]

谢谢。

1 个答案:

答案 0 :(得分:1)

这些规则应该取代RewriteEngine on之后的所有内容:

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

RewriteCond %{HTTP_HOST} ^domain\.com\.tld$ [NC]
RewriteRule ^folder/?(.*)$ https://subdomain.domain.com.tld$1 [R=301,L]

第一组规则与http://subdomain.domain.com.tldhttp://www.subdomain.domain.com.tld

相匹配

第二组与http://domain.com.tld/folder匹配,但在没有“文件夹”部分的情况下与http://domain.com.tld不匹配。

编辑:更正了评论和RewriteConds中的转义点中记录的拼写错误。