gpt4 book ai didi

Apache 重写规则 - 防止重写的 URL 出现在浏览器 URL 栏中

转载 作者:行者123 更新时间:2023-12-04 05:48:49 26 4
gpt4 key购买 nike

我有一个正在寻找特定 URI 的重写规则。当它匹配特定的 URL 时,它会使用正确的文件路径重写它,以便可以找到所需的内容。然后它将协议(protocol)更改为 HTTPS 并允许请求通过。

我有两个问题;

  • 我不希望重写的路径出现在用户浏览器中 - 我想维护虚 url
  • 我确实希望 HTTPS 协议(protocol)向用户表明他们正在通过安全连接访问该站点。

  • 我尝试了几个选项,但没有成功。如果我包含 [R] 标志,则 URL 和协议(protocol)保持不变,但这不是预期的效果

    关于我如何实现这一目标的任何建议?

    这是我的规则;
    RewriteMap redirectsIfSecure txt:/myserver/content/secure_urls.txt
    RewriteCond ${lowercase:%{REQUEST_URI}} ^/(.+)$
    RewriteCond ${redirectsIfSecure:%1|NOT_FOUND} !NOT_FOUND
    RewriteRule ^(.*)$ https://myserver.com${redirectsIfSecure:%1} [PT]

    最佳答案

    从 mod_rewrite 文档:

    If an absolute URL is specified, mod_rewrite checks to see whether the hostname matches the current host. If it does, the scheme and hostname are stripped out and the resulting path is treated as a URL-path. Otherwise, an external redirect is performed for the given URL. To force an external redirect back to the current host, see the [R] flag below.



    如果您将请求重写为与您的 http:// 不匹配的完全限定 URL(即,以 https://ServerName 等开头的任何内容) ,然后 mod_rewrite将发出 HTTP 重定向,这将导致客户端浏览器从新位置请求资源。

    如果您不想在 http 和 https 之间切换,您可以使用代理规则( P 标志)让 Apache 代表客户端发出请求并返回结果,从而屏蔽重写的 URL。

    但是,如果您尝试从 http 升级到 https(或相反),这将始终需要客户端重定向。

    关于Apache 重写规则 - 防止重写的 URL 出现在浏览器 URL 栏中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10340205/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com