Apache 反向代理不保留域名

Apache 反向代理不保留域名

我有一个网站example.wordpress.com(例如 wordpress 多站点的子网站),但我希望用户在不同的域下看到该网站的内容cooking.com。我为两个域设置了 A 记录以转发到相同的 IP,并且我已阅读,如果我想将域名保留在我需要使用的 URL 中mod_proxy。这是我的设置:

<VirtualHost *:80>
    ServerName cooking.com

    ProxyRequests Off
    <Proxy *>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Proxy>
    ProxyPass / http://example.wordpress.com/
    ProxyPassReverse / http://example.wordpress.com/
</VirtualHost>

然而,当我cooking.com在浏览器中输入时,它会重定向到example.wordpress.com并显示它是URL 而不是cooking.com。我的 apache 文件有什么问题?

我也尝试过使用mod_rewrite,但仍然得到相同的结果:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^cooking.com$ [NC]
RewriteRule ^(.*)$ http://example.wordpress.com/$1 [L,P,NC]

我已经启用mod_proxymod_proxy_http,并且在 Ubuntu 16.04 上使用 Apache 2.4。

答案1

我已经解决了这个问题。由于我不知道的原因,原始网站强制使用 HTTPS(尽管我没有配置它)。根据用户的ezra-s建议(在检查响应标头中的位置后),我已更改ProxyPassReverse为重定向到 HTTPS 域(这会导致无限循环)。但是,在检查 apache 日志和谷歌搜索后,解决方案是添加SSLProxyEngine on。它现在可以正常工作,并且它会重定向到网站,但不会在浏览器中更改 URL。

给像我这样的初学者的提示

您可以在浏览器的开发人员控制台中查看响应标头,只需转到网络选项卡,然后(重新)加载页面。

WordPress 多站点用户须知

虽然子网站的域名已经更改,但网站仍然包含指向旧域名的页面的链接。

相关内容