Как настроить apache (vhost) для имени сервера-хоста
Прежде всего, извините за мой несовершенный английский. Но позвольте мне объяснить мою проблему с Apache Vhosts.
Пример: мое имя сервера - example.de (/etc/hostname). Если я настрою для этого конкретного домена, мой vhost не будет работать. Кажется, Apache использует default-vhost. Но мне нужен default-vhost для страниц, которые не активны на моем сервере. Поэтому я не могу использовать его для домена example.de
Мне нужно решение для следующей проблемы:
- example.de - должен указывать на / var / www / example (это не работает, потому что / etc / hostanme)
- example2.de - должен указывать на /var/www/example2 (это работает)
- domain-i-got-but-not-active.de Должен указывать на /var/www/default (Это работает, но также перехватывает example.de)
Я не могу изменить имя своего хоста, потому что письма, отправленные с моего сервера, будут обнаружены как спам, если имя сервера установлено неправильно.
Вот пример моего vhost:
# For default-pages
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/default
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/default>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
# Doesn´t work, points to default (above code)
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName example.de
DocumentRoot /var/www/example
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/example>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
# All fine
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName example2.de
DocumentRoot /var/www/example2
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/example2>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
2 ответа
Согласно документации Apache:
Если имя сервера не указано, сервер пытается определить имя хоста, выполнив обратный поиск по IP-адресу.
Обратный просмотр: найдите IP-адрес, чтобы найти доменное имя для IP-адреса.
Я думаю, именно поэтому example.de
обслуживается по умолчанию VirtualHost
так что попробуйте добавить ServerName domain-i-got-but-not-active.de
и если это VirtualHost
определяется первым:
он имеет наивысший приоритет и может рассматриваться как сервер по умолчанию или основной сервер. Это означает, что если получен запрос, который не соответствует ни одной из указанных директив ServerName, он будет обслуживаться этим первым VirtualHost.
<VirtualHost *:80>
DocumentRoot /var/www/example
DirectoryIndex index.php
ServerName example.de
setEnv DOMAIN_NAME example.de
<Directory "/var/www/example">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
Require all granted
</Directory>
</VirtualHost>
попробуй это