отключить поддомен в редиректах прокси-передачи

Вопрос или проблема

Мой основной домен – https://example.com. Я решил создать блог в другом подсайте и из-за проблем с безопасностью на другом сервере. С помощью ProxyPass в конфигурации Apache VirtualHost я продемонстрировал адрес https://blog.example.com/blog как https://example.com/blog.

Основной сервер запускал приложение nextjs.
Конфигурация http-vhost.conf основного сервера:

<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    UserDir disabled
    ServerName example.com
    ServerAlias example.com
    ScriptAlias /cgi-bin/ /var/www/cgi-bin/
    CustomLog /var/log/httpd/homedir.log homedir
    CustomLog /var/log/httpd/access_log combined
    ErrorLog /var/log/httpd/error_log
    ProxyPreserveHost On

    ProxyPass   "/blog" https://blog.example.com/blog
    ProxyPassReverse "/blog" https://blog.example.com/blog

    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/

    <Location "/blog">
        ProxyPreserveHost Off
        ProxyPassReverse "https://blog.example.com"
        ProxyErrorOverride On
    </Location>

</VirtualHost>

Но, к сожалению, я не могу отключить этот адрес https://blog.example.com/blog. Я хочу только показать этот адрес https://example.com/blog.

Существует ли способ выполнить вышеуказанную задачу только с помощью .htaccess на сервере blog.example.com?

blog.example.com работает на сервере wordpress, используя общий хостинг, и я не могу настроить httpd-vhost.conf, и я могу только изменить файл .htaccess.

Ответ или решение

Для решения проблемы с отображением адреса https://blog.example.com/blog вместо https://example.com/blog при использовании прокси на вашем сервере Apache, мы можем воспользоваться файлом .htaccess на сервере subdomain (blog.example.com). Ниже приведены шаги, которые помогут вам скрыть оригинальный адрес и сделать его редиректом на основной домен.

Шаг 1: Редирект на основной домен

В файле .htaccess на сервере blog.example.com поместите следующий код:

RewriteEngine On

# Делаем редирект с blog.example.com/blog на example.com/blog
RewriteCond %{HTTP_HOST} ^blog\.example\.com$ [NC]
RewriteRule ^blog/(.*)$ https://example.com/blog/$1 [R=301,L]

Объяснение кода:

  1. RewriteEngine On: Этот параметр активирует механизм переписывания URL-адресов.
  2. RewriteCond %{HTTP_HOST} ^blog\.example\.com$ [NC]: Здесь мы проверяем, что хост соответствует вашему поддомену blog.example.com. Условие не чувствительно к регистру благодаря флагу [NC].
  3. RewriteRule ^blog/(.*)$ https://example.com/blog/$1 [R=301,L]: Если условие выполнено, переписываем URL-адрес. Здесь мы делаем перенаправление с любого URL, начинающегося на /blog, на соответствующий URL в основном домене.

Шаг 2: Убедитесь, что SUBDOMAIN не доступен напрямую

Вы также можете запретить прямой доступ к вашему блогу через поддомен, чтобы избежать ненужных переходов. Для этого добавьте следующий код в .htaccess:

# Запрет доступа к блогу через поддомен
RewriteCond %{HTTP_HOST} ^blog\.example\.com$ [NC]
RewriteRule ^ - [F,L]

Данный конфигурационный код заблокирует все запросы к поддомену blog.example.com, генерируя ответ с кодом 403 (доступ запрещен).

Заключение

Эти изменения в файле .htaccess на сервере blog.example.com позволят скрыть оригинальный адрес вашего блога и перенаправить его на основной домен. Убедитесь, что после внесения изменений вы протестируете все сценарии доступа, чтобы убедиться, что перенаправления работают корректно и доступ к блогу через поддомен действительно заблокирован. Это не только улучшит безопасность, но и обеспечит более удобный пользовательский опыт для ваших посетителей.

Используйте эти рекомендации с осторожностью, чтобы не повредить существующие функциональности вашего блога и учтите, что корректная настройка .htaccess может влиять на производительность и SEO вашего сайта.

Оцените материал
Добавить комментарий

Капча загружается...