Env:Ubuntu 18,Apache2,XWiki 12.1在JETTY 9.4 上
我在https://wiki.company.com:8443/xwiki/
上有xwiki,我想隐藏端口8443
和可选的/xwiki/
。我尝试过虚拟主机:
<VirtualHost *:443>
ProxyPreserveHost On
SSLProxyEngine On
SSLProxyCheckPeerCN Off
SSLCertificateFile /etc/ssl/certs/company.crt
SSLCertificateKeyFile /etc/ssl/private/comapny.key
ProxyPass / https://wiki.company.com:8443/xwiki/
ProxyPassReverse / https://wiki.company.com:8443/xwiki/
</VirtualHost>
这种类似的解决方案适用于许多项目,但不适用于xwiki。问题是,在这个解决方案中,xwiki在加载某些文件时出现问题,因为它仍然试图从https://wiki.company.com/xwiki/webjars/wiki%3Axwiki/drawer/2.4.0/css/drawer.min.css
而不是
https://wiki.hl-display.com/webjars/wiki%3Axwiki/drawer/2.4.0/css/drawer.min.css
那么,也许还有其他解决方案,比如去除xwiki
ProxyPass / https://wiki.company.com:8443/
ProxyPassReverse / https://wiki.company.com:8443/
并在浏览器中输入确切的https://wiki.company.com
时将用户重定向到https://wiki.company.com/xwiki/
或者mod重写以替换字符串
https://wiki.company.com/xwiki/hhh/jjj/aaa
至
https://wiki.company.com/hhh/jjj/aaa
?
我尝试了很多设置,但都没有成功:(
好的,我找到了解决方案:(通过在VirtualHost 中添加3行
RewriteCond %{HTTP_HOST} wiki.company.com$ [NC]
RewriteCond %{REQUEST_URI} !^/xwiki/(.*)$
RewriteRule ^(.*)$ /xwiki/ [R=301,L]
所以现在,当用户输入确切的URL:https://wiki.company.com
时,它将重定向到https://wiki.company.comxwiki
。所以wiki工作,端口是隐藏的,漂亮的URL工作:(
所以完整的代码是:
<VirtualHost *:443>
ProxyPreserveHost On
SSLProxyEngine On
SSLProxyCheckPeerCN Off
SSLCertificateFile /etc/ssl/certs/company.crt
SSLCertificateKeyFile /etc/ssl/private/company.key
RewriteEngine on
ServerName https://wiki.company.com
RewriteCond %{HTTP_HOST} wiki.company.com$ [NC]
RewriteCond %{REQUEST_URI} !^/xwiki/(.*)$
RewriteRule ^(.*)$ /xwiki/ [R=301,L]
ProxyPass / https://wiki.company.com:8443/
ProxyPassReverse / https://wiki.company.com:8443/
</VirtualHost>