10

Here is what I have got:

  • CentOS 5.4 (32-bit)
  • installed Apache httpd (Server version: Apache/2.2.11 (Unix))
  • mod_rewrite already presents

Question: how to redirect simple http://site.com to https://site.com not using VirtualHost defines?

PS: tried to find in later answers on SF, but doesn't find nice solution.

Thanks.

mosg
  • 235
  • 1
  • 2
  • 11

2 Answers2

9
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Ernest Mueller
  • 1,199
  • 2
  • 12
  • 25
  • 2
    `RewriteRule ^(.*) https://%{HTTP_HOST}$1` makes more sense to me. – cregox May 03 '11 at 15:40
  • Won't that infinite loop on you? – Ernest Mueller May 04 '11 at 04:14
  • Nope, just tested it. It's even how it's [advised under the docs](http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule) - look at the end of it. – cregox May 04 '11 at 19:14
  • 1
    I get an infinite loop using Apache 2.4.10, deploying on Heroku, when I insert those commands into my .htaccess. And the variant suggested by Cawas oddly mangles my URL. I've tried a different set of commands: `RewriteCond %{HTTP:X-Forwarded-Proto} !https` and `RewriteRule ^/?(.*) https://%{SERVER_NAME}%{REQUEST_URI}` -- which works on Chrome and Firefox, but fails on Safari and Opera. Interestingly, if I take the three lines above and omit `RewriteEngine On` I no longer get the infinite loop, but it still fails in Safari and Opera (and works in Chrome and Firefox). – Purplejacket Aug 04 '14 at 20:31
2

You can use mod_alias and Redirect based on directory. The linked document identifies additional details.

<Directory /path/to/site>
   Redirect /service https://foo2.example.com/service 
</Directory>
Warner
  • 23,756
  • 2
  • 59
  • 69