如何在一个规则中强制SSL _and_删除www?

时间:2013-10-14 11:42:54

标签: .htaccess ssl no-www

我有一个ExpressionEngine网站,我需要强制SSL 删除www。来自网址。我正在使用此代码:

RewriteEngine On
RewriteBase /

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

# Remove index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteRule ^(.*)$ index.php/$1 [L]

但我刚刚意识到如果有人访问https://www.URLHERE.com,他们就不会删除www。有没有办法强制SSL并在一个规则中删除WWW(即我可以做'或'或其他什么?)或者我是否必须制定2个规则,一个用于删除WWW,另一个用于强制SSL?

1 个答案:

答案 0 :(得分:2)

对于这两种情况,规则中都有OR条件:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=302,L,NE]

// rest of your rules here...