Назад | Перейти на главную страницу

Обратный прокси-сервер Apache не сохраняет доменное имя

У меня есть сайт, например 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-адреса в браузере.

Примечание для новичков вроде меня

Вы можете просмотреть заголовки ответов в консоли разработчика в своем браузере, просто перейдите на вкладку сети и (повторно) загрузите страницу.

Примечание для многосайтовых пользователей wordpress

Хотя домен для дочернего сайта изменен, сайт по-прежнему содержит ссылки на его страницы, адресованные старому домену.