我想强制我的用户使用https登录。 不幸的是,“重定向”指令似乎不能与“ProxyPass”结合使用
<VirtualHost *:80>
ServerName www.domain.com
# This does not work
Redirect permanent /app/login.jsp https://www.domain.com/app/login.jsp
ProxyPass /app http://localhost:8080/app
ProxyPassReverse /app http://localhost:8080/app
</VirtualHost>
有什么想法吗? 感谢。
答案 0 :(得分:8)
在这里找到这个问题的答案:
https://serverfault.com/questions/605931/can-you-use-redirect-and-proxypass-at-the-same-time
需要在其他proxypass指令之前添加以下内容:
ProxyPass /app/login.jsp!
答案 1 :(得分:5)
我有一个更复杂的用例,需要使用ProxyPassMatch
。它有点像这样:
ProxyPassMatch ^/app(/(index.html)?)?$ !
RedirectMatch ^/app(/(index.html)?)?$ /path/to/login/page.html
ProxyPass /app/* http://remote-server/app
ProxyPassReverse /app/* http://remote-server/app
我必须使用ProxyPassMatch
,因为ProxyPass
会执行前缀匹配。您需要匹配字符串结尾,因此ProxyPassMatch
具有$
正则表达式元字符是至关重要的。
此处,RedirectMatch
的使用方式相同,因为Redirect
也会执行前缀匹配。这两个指令也具有很好的对称性。
答案 2 :(得分:0)
正如您所指出的那样,您拥有位置ProxyPass
的{{1}}这一事实意味着任何击中该路径的内容都将受代理人的约束。
您可以省略使用/app
并使用ProxyPass
和代理RewriteRule
标记执行代理:
[P]