我们有一个来自供应商的 Tomcat 应用程序,在它前面运行 Apache,但我们无权访问应用程序代码。我们在应用程序周围有自己的单点登录,因此如果用户在应用程序中单击“注销”,用户将被带到未使用的“登录”屏幕。我们想将该登录屏幕重定向到默认的 Tomcat 页面,但我似乎无法获得正确的语法。
我已经尝试了一些没有运气的调整(转义 /'s 等)。有人有什么想法吗?我已经有一个 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>
RewriteRule 默认假定重写的结果是一个文件系统路径。您告诉您的服务器从文件系统的根目录提供 /abc/login 服务,这可能不是您想要的,正确配置的服务器也不允许这样做。
您需要做的是添加 PT 标志。像这样:
PT 标志隐含 L,并会导致服务器将替换结果视为 URI,而不是文件系统路径。
弄清楚了 - 原来我在错误的 VirtualHost 声明下包含了重定向指令。
在上面的示例中,我们在 80 端口虚拟主机之后直接设置了重定向规则,其唯一目的是将用户重定向到 HTTPS。一旦用户在 VirtualHost *443 上结束,我们的第二个重写规则将永远不会运行。
将上述重写规则复制到我们的 *443 声明中会立即生效。