2013-02-02 105 views
0

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

我的问题是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

这些规则应该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中的转义点。

+0

好吧,domain.com.tld原地踏步,这是伟大的,但subdomain.domain.com.tld只是去subdomain.domain.com/tld,解决了这个改变 的.com/TLD 到 \ .COM .tld 但得到浏览器的重定向错误。 注意:我通过替换RewriteCond%{HTTP_HOST}下的代码编辑了我的.htaccess。 – Domenico

+0

对不起,'/ tld'而不是'.tld',这是我的一个错字。我还在RewriteConds中适当添加了反斜杠 - 在这种情况下,这不会是一个问题,但在技术上更加正确(请注意,RewriteRule中的域不需要它们,因为它不执行匹配)。规则旨在取代你所有的原始规则。我不确定最初的'RewriteCond%{HTTP_HOST} .'原本是做什么的......它只能匹配主机名是单个字符的情况,这绝不是这种情况,所以一定要删除它。 –

+0

不用担心,谢谢编辑。虽然我得到“尝试打开https://subdomain.domain.com.tld/时出现重定向,但从domain.com.tld /文件夹重定向到subdomain.com.tld不起作用。三重检查,并在多个浏览器上。 – Domenico