2014-01-21 37 views
1

我找到了2个不同的代码段强制HTTPS在我的网站:差异化的2阿帕奇

RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L] 

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

我敢肯定,从他们的httpd都工作(一个人的Wiki和另一位来自SSL购物者)。有人能够解释他们如何执行重定向的区别吗?

回答

2

他们只是用不同的Apache变量来弥补重定向的URL。

RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L] 

这第一条规则,如果一个输入诸如myfile.php文件名,并让你得到https://somesite.com/myfile.php

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

使用%{HTTP_HOST}第二届一个在重定向它取代$1追加重定向将抓取来自http头部的信息,而不是组成用于重定向的URL,因此输入相同的URL http://somesite.com/myfile.php将被重定向到https://somesite.com/myfile.php

这只是告诉Apache什么用于重定向的问题。请使用服务器内部名称或使用浏览器发送的名称。

%{SERVER_NAME} 

这是apache中的服务器内部变量,并在服务器配置中定义。

%{HTTP_HOST} 

这是浏览器在HTTP请求标头中发送的内容。这是客户端,而如果从服务器配置SERVER_NAME

%{REQUEST_URI} 

REQUEST_URI是请求的URI的路径组件,例如“/index.html”。这是一个特殊的Apache变量。

目前已完成重定向到https两者都应该工作许多方面。你的选择。

+0

谢谢你提供一个非常完整和清晰的答案! – Eric

+0

欢迎,没问题。 –