поэтому посещение моего сайта example.com
работает как задумано. Я успешно настроил перенаправление, которое abc.example.com
будет перенаправлять на example.com/abc
.
Файл конфигурации выглядит так abc.example.com.conf
:
<VirtualHost *:80>
ServerName abc.example.com
RedirectPermanent / https://example.com/abc
</VirtualHost>
Моя проблема:
При посещении моего веб-сайта путем ввода необработанного IP-адреса в браузере я также буду перенаправлен на, example.com/abc
что не является желаемым поведением. Необработанный IP-адрес в браузере должен выбросить меня изexample.com
Вот example.com.conf
файл:
<VirtualHost *:80>
ServerName example.com
ServerAlias example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com [OR]
RewriteCond %{SERVER_NAME} =www.example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
Что мне нужно изменить, чтобы при вводе моего IP-адреса example.com
отображался адрес вместо abc.example.com
?
решение1
Это происходит потому, что один из ваших vhosts действует как vhost по умолчанию. Когда ServerName
на уровне сервера (т.е. не в VirtualHost
блоке) совпадает с одним внутри VirtualHost
, это будет значение по умолчанию. Если ничего не установлено, то это обычно первый vhost.
Предполагая, что вы используете конфигурацию all-vhost, ответ заключается в том, чтобы установить ServerName example.com
(и соответствующий Listen
) за пределами блока vhost.
Ссылка:https://httpd.apache.org/docs/2.4/vhosts/name-based.html
Главный хозяин уходит
Любой запрос, не соответствующий существующему, обрабатывается глобальной конфигурацией сервера, независимо от имени хоста или ServerName.
Когда вы добавляете виртуальный хост на основе имени к существующему серверу, и аргументы виртуального хоста соответствуют уже существующим комбинациям IP и порта, запросы теперь будут обрабатываться явным виртуальным хостом. В этом случае обычно разумно создать виртуальный хост по умолчанию с ServerName, соответствующим ServerName базового сервера. Новые домены на том же интерфейсе и порту, но требующие отдельных конфигураций, затем можно добавить как последующие (нестандартные) виртуальные хосты.