在.htaccess文件中组合规则?

时间:2015-12-29 19:45:41

标签: apache .htaccess mod-rewrite redirect url-rewriting

我想知道如何在一个.htaccess文件中连接这两个重写规则。目前,我使用此规则强制https连接到我的网站:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{ENV:HTTPS} !=on
RewriteCond %{HTTP_HOST} !=SERVER_NAME
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

现在我想从我的www-subdomain重定向到我的真实域名。评分很高here

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

但我没有将这两者放在一起。

1 个答案:

答案 0 :(得分:2)

您可以使用:

RewriteEngine On

# if with www, redirect to https domain without www
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [NE,L,R=301]

# if http, redirect to https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

如果您首先测试www并重定向到https,则无需测试http://www

或者像@PanamaJack所说,你可以使用:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteRule ^ https://domain.com%{REQUEST_URI} [NE,L,R=301]

但您需要更改域名。