The REQUEST_SCHEME
environment variable is documented on the Apache mod_rewrite page. However, it didn’t become available until Apache 2.4.
I only have Apache 2.2 so I created an environment variable. I added the following to the top of my .htaccess file.
RewriteEngine on
# Set REQUEST_SCHEME (standard environment variable in Apache 2.4)
RewriteCond %{HTTPS} off
RewriteRule .* - [E=REQUEST_SCHEME:http]
RewriteCond %{HTTPS} on
RewriteRule .* - [E=REQUEST_SCHEME:https]
Now I can use
%{ENV:REQUEST_SCHEME}
in other rewrite conditions and rules$_SERVER['REQUEST_SCHEME']
in my PHP code
I don’t have to do extra messy conditional checks everywhere, and my PHP code is forward compatible. When Apache is upgraded, I can change my .htaccess file.
I don’t know how you’d apply this to a Windows environment. This is probably not a good solution for distributed code, but it works well for my needs.