Почему мои vhosts совпадают без доменного имени?

Я настроил мой httpd-vhosts.conf файл следующим образом:

<VirtualHost seg.localhost:81>
    ServerAdmin my@email.com
    DocumentRoot "D:\path\to\public_html"
    ServerName http://seg.localhost
    ServerAlias http://seg.localhost
    ErrorLog "logs/seg.log"
    CustomLog "logs/seg" common
    <directory "D:\path\to\public_html">
        Options Indexes FollowSymLinks
        AllowOverride all
        Order Deny,Allow
        Deny from all
        Allow from all
    </directory>
</VirtualHost>

Но когда я иду в http://localhost:81/ в моем браузере он все еще попадает в эту папку. Почему поддомен игнорируется?

1 ответ

Если вы используете vhosts на основе имен, самый верхний vhost (первый экземпляр <VirtualHost> block) считается vhost по умолчанию, что означает, что если запрос сделан для хоста, который не соответствует ни одному из заданных <VirtualHost>Это самый верхний из них.

Вы можете обойти это, добавив новый топ-хост, который просто отрицает все:

<VirtualHost seg.localhost:81>
   ServerName _default_
   DocumentRoot "D:\path\to\public_html"
   <Directory "D:\path\to\public_html">
      Order Allow,Deny
      Deny from all
   </Directory>
</VirtualHost>

Или перенаправьте его на seg.localhost, или как хотите.

Другие вопросы по тегам