我有一个网站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_proxy
和mod_proxy_http
,并且在 Ubuntu 16.04 上使用 Apache 2.4。
答案1
我已经解决了这个问题。由于我不知道的原因,原始网站强制使用 HTTPS(尽管我没有配置它)。根据用户的ezra-s
建议(在检查响应标头中的位置后),我已更改ProxyPassReverse
为重定向到 HTTPS 域(这会导致无限循环)。但是,在检查 apache 日志和谷歌搜索后,解决方案是添加SSLProxyEngine on
。它现在可以正常工作,并且它会重定向到网站,但不会在浏览器中更改 URL。
给像我这样的初学者的提示
您可以在浏览器的开发人员控制台中查看响应标头,只需转到网络选项卡,然后(重新)加载页面。
WordPress 多站点用户须知
虽然子网站的域名已经更改,但网站仍然包含指向旧域名的页面的链接。