从HTTP重定向到HTTPS,使用apache保留旧的重定向

时间:2016-10-26 14:23:00

标签: apache .htaccess redirect

我需要使用apache服务器重定向从http到https的所有流量。我想保留我的实际重定向(没有www - >带www)

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]

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

有了这个htaccess,我有http-> https重定向,没有www->有www重定向,但不要同时进行。

我需要这个重定向:

http://domain.com - > https://www.domain.com

http://domain.com/foo/bar - > https://www.domain.com/foo/bar

由于

1 个答案:

答案 0 :(得分:1)

您可以使用[OR]子句将单个重定向规则中的两个条件组合在一起:

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

现在,如果您想避免在此规则中使用硬编码域名,请使用:

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

在测试此更改之前清除浏览器缓存。