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

Как добавить новое имя хоста к существующему виртуальному хосту в apache?

Это моя конфигурация apache (самая интересная его часть):

<VirtualHost *:80>
  ServerName example.com
  ...
</VirtualHost>

Работает нормально, и мой сервер правильно реагирует на example.com:80 HTTP-запросы. Теперь я добавлю этому домену псевдоним. Я хочу, чтобы все запросы my-new-domain.com:80/test давать те же ответы, что и на example.com, например:

my-new-domain.com/test/xyz -> example.com/xyz

Что важно, я не хочу видеть перенаправления HTTP (код 301). Я хочу спрятаться example.com URL от пользователя. Все, что ему нужно увидеть, это my-new-domain.com/test URL.

ставить

ServerAlias my-new-domain.com

внутри раздела VirtualHost

для переписывания

RewriteCond %{HTTP_HOST}   ^my-new-domain\.com
RewriteRule /test/(.*)     /$1                   [QSA,L,P]

Используйте mod_rewrite с mod_proxy (https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html). В противном случае, если домены различаются, mod_rewrite выполняет внешнюю перезапись, даже если оба обслуживаются с одного и того же хоста.

Что-то вроде

RewriteRule ^http://my-new-domain.com/test http://example.com [QSA, P]

Другое решение - создать символическую ссылку test в корневом каталоге my-new-domain.com в корневой каталог example.com.