我想通过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]
}
答案 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]