Here’s what I am trying to do. I have a few scripts on a site I am rewriting the URLs to force them to use https://. What I then want to do, is rewrite urls when I navigate away from the HTTPS pages back to HTTP. Here’s what I have now that is not working exactly the way I would like it to.
# For HTTPS pages:
RewriteCond %{HTTPS} off
RewriteRule ^(register/|cms/(.*))$ https://%{HTTP_HOST}/$1 [R=301,L]
# For non-HTTPS pages:
RewriteCond %{HTTPS} on
RewriteRule ^(about/|contact/)$ http://%{HTTP_HOST}/$1 [R=301,L]
The problem I am having is that while the pages like about/ and contact/ rewrite back to HTTP, I can’t figure out how to reference the document root, so it unfortunately stays https://. I like using relative urls, so I would rather not go into my source and change everything to absolute if there is a simple htaccess solution.
My question: How do I properly reference the web root in my RewriteRule?
Also, is there a more efficient, catch-all way of doing what I am trying to accomplish that I just don’t know about, because I haven’t been able to find anyone else with this problem. I am not super-familiar with .htaccess. I learn just enough as I go to do various Rewrite operations, as I will never have a need for the full features, and I find the documentation cumbersome and difficult to follow.
Thanks!
for matching the root use
or combine them with the other rule
As to the catch all expect /register and /cms (that’s what you mean right?). I think this should do the trick.