如何在同一个httpd上将HTTP重定向到HTTPS?


10

这是我得到的:

  • CentOS 5.4(32位)
  • 已安装的Apache httpd(服务器版本:Apache / 2.2.11(Unix))
  • mod_rewrite已经存在

问题:如何使用VirtualHost定义将简单的http://site.com重定向到https://site.com

PS:试图在SF上的以后答案中找到,但找不到很好的解决方案。

谢谢。

Answers:


9
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

2
RewriteRule ^(.*) https://%{HTTP_HOST}$1对我来说更有意义。
cregox 2011年

那不会对你造成无限循环吗?
欧内斯特·穆勒

不,刚刚测试过。甚至是在文档中建议的方式 -查看其结尾。
cregox 2011年

1
当我将那些命令插入到.htaccess中时,使用Apache 2.4.10进行了无限循环,并在Heroku上进行了部署。Cawas建议的变体奇怪地破坏了我的URL。我尝试了另一组命令: RewriteCond %{HTTP:X-Forwarded-Proto} !httpsRewriteRule ^/?(.*) https://%{SERVER_NAME}%{REQUEST_URI}-在Chrome和Firefox上均可使用,但在Safari和Opera上无法使用。有趣的是,如果我忽略了上面的三行内容,那么我将RewriteEngine On不再遇到无限循环,但是在Safari和Opera中它仍然会失败(并且可以在Chrome和Firefox中使用)。
Purplejacket 2014年

2

您可以使用mod_alias和基于目录的重定向。链接的文档标识其他详细信息。

<Directory /path/to/site>
   Redirect /service https://foo2.example.com/service 
</Directory>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.