У меня есть сайт, например example.wordpress.com
(подсайт, мультисайт WordPress), но я хочу, чтобы пользователи видели содержимое этого сайта в другом домене, например cooking.com
. У меня есть настройка записи для обоих доменов для пересылки на один и тот же 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
, и я использую Apache 2.4 в Ubuntu 16.04.
Я решил проблему. По неизвестным мне причинам исходный сайт принудительно использовал HTTPS (хотя я не настраивал его). Как пользователь ezra-s
предложил (после изучения местоположения в заголовках ответов) я изменил ProxyPassReverse
для перенаправления на домен HTTPS (что приводит к бесконечному циклу). Однако после изучения журналов apache и поиска в Google было решено добавить SSLProxyEngine on
. Теперь он работает и перенаправляет на сайт, но без изменения URL-адреса в браузере.
Вы можете просмотреть заголовки ответов в консоли разработчика в своем браузере, просто перейдите на вкладку сети и (повторно) загрузите страницу.
Хотя домен для дочернего сайта изменен, сайт по-прежнему содержит ссылки на его страницы, адресованные старому домену.