Apache .htaccess将根目录重写为子文件夹,但子文件夹app 302会直接重定向回完整路径

Apache .htaccess将根目录重写为子文件夹,但子文件夹app 302会直接重定向回完整路径,apache,.htaccess,url-redirection,mantis,Apache,.htaccess,Url Redirection,Mantis,我有一个标准的.htaccess重写规则,它可以将对webroot的任何请求以静默方式重写到包含MantisBT安装的子文件夹中。因此,用户输入“example.com”,我的服务器秘密地为他们提供“example.com/path/to/mantisbt”中的文件 现在的问题是,MantisBT的索引页立即执行一些基于身份验证的逻辑路由,并将302重定向发送到完整的“example.com/path/to/mantis/login”,这破坏了我的重写。我试图让每个人都能访问我的MantisBT

我有一个标准的.htaccess重写规则,它可以将对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?

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

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

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

感谢您的回复。给定[R]标志,这将在MantisBT已经发送到完整位置的重定向之外生成另一个重定向。正如我上面提到的,我希望找到一个不涉及第二次重定向的解决方案。我希望我能愚弄MantisBT,使其认为它位于根目录中,因此它的初始重定向已经针对webroot,并且MantisBT的真实路径永远不会向浏览器显示(甚至在标题重定向中)。@uberdanzik不确定你为什么要“愚弄”它MantisBT,而不仅仅是配置它,以便它返回基于根的链接。在某些地方,您将其配置为返回链接,如
/path/to/mantisbt/