.htaccess将root重写为子文件夹,但子文件夹应用程序302重定向回到完整路径

时间:2015-09-02 17:19:59

标签: apache .htaccess url-redirection mantis

我有一个标准的.htaccess RewriteRule,可以将任何webroot请求静默重写到包含MantisBT安装的子文件夹中。因此用户键入“example.com”,我的服务器从“example.com/path/to/mantisbt”秘密提供文件。

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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