在SSL虚拟主机使用Apache RedirectMatch
问题描述:
我想:在SSL虚拟主机使用Apache RedirectMatch
- 重定向HTTPS请求
/
到/sweetApp/
- 重定向所有的HTTP请求到https
- 重定向后,到内部IP代理请求地址
我已经设置了这些虚拟主机规则。 http重定向到https,但重定向到/sweetApp/
没有。
最后,我想为sweetSite.com
到代理外部请求并重定向使内部服务器只看到了192.168.3.92:9080/sweetApp/
我使用Apache 2.4.3所以它应该支持基于名称的虚拟主机的SSL请求。
#Redirect to SSL
<VirtualHost *:80>
ServerName sweetSite.com
RedirectMatch ^/$ https://sweetSite.com/
</VirtualHost>
# The Real McCoy
<VirtualHost *:443>
ServerName sweetSite.com
#Map to /sweetApp/ by default
RedirectMatch ^/$ /sweetApp/
SSLEngine On
SSLProxyEngine On
SSLCertificateFile ssl/certificate.crt
SSLCertificateKeyFile ssl/certificate.key
#SSL to HTTP Proxy
ProxyPass/http://192.168.3.92:9080/
ProxyPassReverse/http://192.168.3.92:9080/
</VirtualHost>
答
我的问题是,如果有一个proxyPass规则,它将优先于任何重定向规则。
因为我需要这台机器来执行重定向和代理服务器,我唯一能找到的解决方案是使用mod_rewrite来“代理”并将url更改为/sweetApp/
。