我绝对不是RegEx的专家,但是我正在工作的网站上已有以下htaccess规则:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}$1 [R=301,L]
如何保留此规则,但添加一个例外,该例外会阻止secure.domain.com重定向到www.secure.domain.com,并且还会在secure.domain.com域名上强制使用SSL?
最佳答案
向上述规则集中添加一个附加的RewriteCond
指令,以排除secure
子域,这与排除www
子域的方式相同。 RewriteCond
指令隐式与:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} !^secure\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
在按目录的.htaccess文件中,您需要在替换中的
$1
之前添加斜杠。由于目录前缀已从捕获的模式中删除。如果这是直接在您的服务器配置中,那么您将不需要此。如果需要,以上条件可以合并为一个:
RewriteCond %{HTTP_HOST} !^(www|secure)\. [NC]
然后,要在
secure
子域上强制使用SSL,请添加以下内容:RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^secure\.
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]