htaccess - 了解两个RewriteCond条件之间的差异

时间:2016-08-31 19:11:10

标签: apache .htaccess

如果有人能解释下面的htaccess代码的条件1和条件2之间的差异,我会非常感激。

条件1

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

条件2

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

1 个答案:

答案 0 :(得分:1)

您的规则是,您不需要2个规则来实现相同的目标。它们都会重定向到您网站的https版本,因此您可以使用[OR]

组合这些条件
RewriteEngine on
RewriteCond %{HTTPS} !^on [OR]
RewriteCond %{HTTP_HOST} !^domain\.com$ [NC]
RewriteRule ^(.*)$ https://domain.com/$1 [L,R=301]

因此,如果没有www(或任何其他子域),将会将非http的内容重定向到https。并使用https将www重定向到非www。 2条件相同的规则。