.htaccess使用不同的变量重定向到https

时间:2017-08-08 15:02:26

标签: .htaccess http variables redirect https

我想通过htaccess强制http到https重定向。

问题是我的开发服务器使用%{HTTPS}变量,而我的生产服务器使用%{ENV:HTTPS}变量。

有什么方法可以确定我现在应该使用哪个变量?在伪代码中,我希望实现这样的目标:

if (is_defined %{HTTPS}) {
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
}
else if (is_defined %{ENV:HTTPS}) {
    RewriteCond %{ENV:HTTPS} !^.*on
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
}

1 个答案:

答案 0 :(得分:0)

您可以使用mod-rewite [OR] 标志同时检查两个变量。

RewriteEngine on

#if 1 of these 2 conditions is met
RewriteCond %{HTTPS} off [OR]
RewriteCond %{ENV:HTTPS} off
#redirect the url
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]

或者您只需检查%{REQUEST_SCHEME}变量即可。这适用于apache版本2.4 +

RewriteCond %{REQUERT_SCHEME} http$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]