考虑一下:
我正在尝试将我们的Apache配置设置为替换这样的链接:
data-files-example.com/folder/subfolder/file.zip
our-website-example.com/_downloads/folder/subfolder/file.zip
所以,在我的案例中缺少的部分是:如何设置Apache这样工作?
我正在尝试:
NameVirtualHost *:80
<VirtualHost :80>
ServerAdmin email@our-website-example.com
ServerName our-website-example.com
RewriteEngine On
RewriteRule "^/_downloads(.)$" "https://data-files-example.com/$1" [P]
RewriteCond %{REQUEST_METHOD} ^(PUT|DELETE|PROPFIND|OPTIONS|TRACE|PROPFIND|PROPPATCH|MKCOL|COPY|MOVE|LOCK|UNLOCK)$
RewriteRule .* - [F,L]
RewriteRule ^/(.*) http://127.0.0.1:/VirtualHostBase/http/data-files-example.com:80/my_plone_website/VirtualHostRoot/$1 [L,P]
</VirtualHost>
我收到503 Service Unavailable
。
如何解决这个问题?
答案 0 :(得分:2)
尝试反向代理。只需确保在Apache配置中启用了mod_proxy和mod_proxy_http,并且如果模式是根斜杠,则在Plone的VirtualHostBase规则之前设置代理规则。
ProxyPass /_downloads http://data-files-example.com
ProxyPassReverse /_downloads http://data-files-example.com
当代理到https后端时,您还需要安装mod_ssl并且指令SSLProxyEngine On。
SSLProxyEngine On
ProxyPass /_downloads https://data-files-example.com
ProxyPassReverse /_downloads https://data-files-example.com
答案 1 :(得分:1)
以下代码至少会将您的原始内容重写为您想要的目标网址:
<VirtualHost>
SSLProxyEngine On
RewriteEngine On
RewriteCond %{HTTP_HOST} ^our-website-example.com$
RewriteRule "^/_downloads(.*)$" "https://data-files-example.com/$1" [P,L]
</VirtualHost>
这需要激活模块mod_ssl
,mod_proxy
和mod_rewrite
。
让我们知道这是否是您寻求的解决方案,如果没有,哪里出错:)