【问题标题】:.htaccess rewrites root to subfolder, yet subfolder app 302 redirects right back to full path.htaccess 将根目录重写为子文件夹,但子文件夹应用程序 302 重定向回完整路径
【发布时间】:2015-09-02 17:19:58
【问题描述】:

我有一个标准的 .htaccess RewriteRule,它默默地将任何对 webroot 的请求重写到包含 MantisBT 安装的子文件夹中。所以用户输入“example.com”,我的服务器会秘密地为他们提供来自“example.com/path/to/mantisbt”的文件。

现在的问题是 MantisBT 的索引页面会立即进行一些基于身份验证的逻辑路由,并发送 302 重定向到完整的“example.com/path/to/mantis/login”,这颠覆了我的重写。我试图让每个人都可以访问我的 MantisBT 安装,就好像它驻留在 webroot 中一样。

现在,我知道在 MantisBT 的 302 重定向到完整路径后,我可以再次将它们重定向回 webroot。但是,每次 MantisBT 执行某些路由逻辑时都将人们重定向两次似乎是一种肮脏的黑客行为。我也知道我可以破解 MantisBT 代码,但我讨厌每次发布新版本时都重新破解代码。

那么,有没有办法让 MantisBT(或任何其他应用程序)认为它驻留在根目录中,从而根据 webroot 相对 url 制作它的重定向路径?例如:“example.com/login”而不是“example.com/path/to/mantis/login”。

我真的更喜欢使用 Apache .htaccess 方法或 httpd.conf 更改来解决此问题。也许是 DocumentRoot 或 RewriteBase?

【问题讨论】:

    标签: apache .htaccess url-redirection mantis


    【解决方案1】:

    尝试将此规则添加到您之前的内部重写规则之上

    RewriteCond %{THE_REQUEST} \ /+path/to/mantisbt/([^\?\ ]*)
    RewriteRule ^ /%1 [L,R]
    

    当浏览器直接请求/path/to/mantisbt/ 中的任何内容时,这会重定向浏览器。然后你已经必须在内部重写到 mantisbt 目录的规则将生效。

    【讨论】:

    • 感谢您的回复。鉴于 [R] 标志,除了 MantisBT 已经发送到完整位置的一个重定向之外,这将生成另一个重定向。正如我上面提到的,我希望有一个不涉及第二次重定向的解决方案。我希望我可以欺骗 MantisBT 使其认为它驻留在根目录中,因此它的初始重定向已经针对 webroot,并且 MantisBT 的真实路径永远不会显示给浏览器(即使在标头重定向中)。
    • @uberdanzik 不知道您为什么要尝试“愚弄”MantisBT,而不是仅仅对其进行配置,以便它返回基于根的链接。在某处您已将其配置为返回 /path/to/mantisbt/ 之类的链接
    猜你喜欢
    • 1970-01-01
    • 2012-02-27
    • 2016-06-27
    • 2020-01-08
    • 2017-01-29
    • 2021-09-03
    • 2011-01-19
    • 2021-11-20
    相关资源
    最近更新 更多