我有一个标准的。htaccess rewriterrule,它会静默地将任何对webroot的请求重写到包含MantisBT安装的子文件夹中。因此,用户输入"example.com",我的服务器秘密地从"example.com/path/to/mantisbt"为他们提供文件。
现在的问题是,MantisBT的索引页立即做一些基于身份验证的逻辑路由,并发送一个302重定向到完整的"example.com/path/to/mantis/login",这颠覆了我的重写。我试图让每个人都访问我的MantisBT安装,就好像它驻留在web浏览器中。
现在,我知道在MantisBT的302重定向到完整路径后,我可以再次将它们重定向回webroot。但是每次MantisBT通过一些路由逻辑时,重定向用户两次似乎是一种肮脏的黑客行为。我也知道我可以破解MantisBT代码,但我讨厌每次新版本出来时重新破解代码。
那么,是否有一种方法可以欺骗MantisBT(或任何其他应用程序)认为它驻留在根目录中,因此根据webrot -relative url制作它的重定向路径?例如:"example.com/login"而不是"example.com/path/to/mantis/login"
我真的更喜欢使用Apache .htaccess方法或httpd.conf更改来解决这个问题。也许是DocumentRoot或RewriteBase?
尝试将此规则添加到之前的内部重写规则之上
RewriteCond %{THE_REQUEST} /+path/to/mantisbt/([^? ]*)
RewriteRule ^ /%1 [L,R]
当浏览器直接请求/path/to/mantisbt/
中的任何内容时,将重定向浏览器。然后,您已经在内部重写到mantisbt目录中的规则将生效。