Eri*_*ric 1 apache mod-rewrite https redirect
我发现了 2 个不同的代码片段可以在我的网站上强制使用 https:
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
Run Code Online (Sandbox Code Playgroud)
和
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Run Code Online (Sandbox Code Playgroud)
我确信它们都可以工作(一个来自 Httpd Wiki,另一个来自 SSL shopper)。有人能够解释他们如何执行重定向的差异吗?
他们只是使用不同的 Apache 变量来组成重定向的 URL。
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
Run Code Online (Sandbox Code Playgroud)
如果输入了文件名(例如 myfile.php),则第一条规则将采用文件名,并附加重定向,并用它替换$1
重定向,以便您获得https://somesite.com/myfile.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Run Code Online (Sandbox Code Playgroud)
第二个使用%{HTTP_HOST}
将从 http 标头中获取信息,而不是组成用于重定向的 URL,因此输入相同的 urlhttp://somesite.com/myfile.php
将被重定向到https://somesite.com/myfile.php
只需告诉 apache 使用什么进行重定向即可。使用服务器内部名称或使用浏览器发送的名称。
%{SERVER_NAME}
Run Code Online (Sandbox Code Playgroud)
这是 apache 中的服务器内部变量,在服务器配置中定义。
%{HTTP_HOST}
Run Code Online (Sandbox Code Playgroud)
这是浏览器在 HTTP 请求标头中发送的内容。这是客户端,而如果SERVER_NAME
来自服务器配置。
%{REQUEST_URI}
Run Code Online (Sandbox Code Playgroud)
REQUEST_URI
是请求的 URI 的路径组成部分,例如“/index.html”。这是一个特殊的 Apache 变量。
已经采取了多种方法来重定向到,https
并且两者都应该有效。你的选择。
归档时间: |
|
查看次数: |
951 次 |
最近记录: |