Apache / Tomcatredirect

我们有一个来自Apache前面的供应商的Tomcat应用程序,但是我们没有访问应用程序代码。 我们在应用程序中包含了自己的单一标志,因此如果用户在应用程序中单击“注销”,用户将被带到未使用的“login”屏幕。 我们希望将该login屏幕redirect到默认的Tomcat页面,但我似乎无法获得正确的语法。

我已经尝试了一些调整,没有运气(转义/等)。 有没有人有任何想法? 我已经有一个HTTP到HTTPSredirect工作(包含在下面的指令)。

“注销”链接经过几个redirect,最终结束于: http : //ourserver.com/abc/login

为了简单起见,我们希望将login页面的任何请求redirect到: http : //ourserver.com/

<VirtualHost *:80> RewriteEngine On RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L] RewriteRule ^/abc/login$ / [L] </VirtualHost> 

RewriteRule在默认情况下假定重写的结果是一个文件系统path。 您正在告诉您的服务器从文件系统的根目录提供/ abc / login,这可能不是您想要的,也不是正确configuration的服务器甚至允许它。

你需要做的是添加PT标志。 喜欢这个:

 RewriteRule ^/abc/login$ / [PT] 

PT标志意味着L,并且将导致服务器将替代结果视为URI而不是文件系统path。

想通了 – 原来我在包含错误的VirtualHost声明下的redirect指令。

在上面的例子中,我们有redirect规则直接跟在80端口的虚拟主机之后,其唯一目的是将用户redirect到HTTPS。 一旦用户在VirtualHost * 443上结束,我们的第二个重写规则将永远不会运行。

将上面的重写规则复制到我们的* 443声明中即可使用。