【问题标题】:Difference between 2 apache mod_rewrites2 apache mod_rewrites 之间的区别
【发布时间】:2014-02-11 18:04:52
【问题描述】:

我发现 2 个不同的代码 sn-ps 在我的网站上强制使用 https:

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

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

我确信它们都可以工作(一个来自 Httpd Wiki,另一个来自 SSL 购物者)。有人可以解释他们执行重定向的方式的差异吗?

【问题讨论】:

    标签: apache mod-rewrite redirect https


    【解决方案1】:

    他们只是使用不同的 Apache 变量来构成重定向的 URL。

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

    如果输入了文件名,例如 myfile.php,则第一条规则将获取文件名,并附加重定向,并在重定向中替换 $1,以便您获得 https://somesite.com/myfile.php

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

    使用%{HTTP_HOST} 的第二个将从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,两者都应该有效。您的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-31
      • 2017-06-14
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多