Apache/Tomcat 重定向

Apache/Tomcat 重定向

我们有一个来自供应商的 Tomcat 应用程序,该应用程序前面运行着 Apache,但我们无法访问该应用程序代码。我们在该应用程序周围有自己的单点登录,因此如果用户在应用程序中单击“注销”,则该用户将被带到未使用的“登录”屏幕。我们想将该登录屏幕重定向到默认的 Tomcat 页面,但我似乎无法正确使用语法。

我尝试了很多调整,但都没有成功(转义 / 等)。有人有什么想法吗?我已经有一个 HTTP 到 HTTPS 重定向工作了(包含在下面的指令中)。

“注销”链接经过几次重定向,最终到达:http://ourserver.com/abc/login

为了简单起见,我们想重定向任何请求登录页面:http://ourserver.com/

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

答案1

RewriteRule 默认假设重写的结果是文件系统路径。您告诉服务器从文件系统的根目录提供 /abc/login,这可能不是您想要的,正确配置的服务器也不允许这样做。

您需要做的是添加 PT 标志。如下所示:

RewriteRule ^/abc/login$ / [PT]

PT 标志暗示 L,并且会导致服务器将替换结果视为 URI,而不是文件系统路径。

答案2

弄清楚了——原来我在错误的 VirtualHost 声明下包含了重定向指令。

在上面的例子中,我们有一条直接跟随端口 80 虚拟主机的重定向规则,其唯一目的是将用户重定向到 HTTPS。一旦用户访问 VirtualHost *443,我们的第二条重写规则就永远不会运行。

将上述重写规则复制到我们的 *443 声明中立即生效。

相关内容