Если предположить, что у меня есть сервер с именем machinename.ip
который решает http://machinename.ip
по умолчанию root (/var/www/html
), и разрешает http://www.example.com
через файл vhosts www.example.com
к /var/www/html/example
Есть ли простой способ запретить доступ к /var/www/html/example
папка (и любые подкаталоги / файлы) Кроме через www.example.com
vhost? т.е. когда через определенный URL-адрес vhost добавлен, вы можете получить к ним доступ, так что www.example.com
идет в /var/www/html/example
но http://machinename.ip/example
или любая другая комбинация не приведет вас ни туда, ни в какие поддиректории?
Например для файла /var/www/html/example/myfile.php
http://www.example.com/myfile.php *yay works*
но
http://machinename.ip/example/myfile.php *does not*
вы можете сделать это так: в httpd.conf
<Directory "/var/www/html">
Deny from all
</Directory>
затем где-то внутри vhosts.conf
файл добавить немного <Directory
разметка (вот так)
<VirtualHost...{blah}
# | ADD THIS
# v
<Directory "/var/www/html/example">
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# ^
# | ADD THIS
{...blah near where you may have something like...}
DocumentRoot /var/www/html/example
ServerAlias example.com
</VirtualHost>
вам нужно будет сделать эти блоки для ВСЕХ ваших хостов, но если вы готовы смириться с этим, это сработает
Конечно, ты можешь это сделать. Большинство веб-серверов, с которыми я работаю, имеют хост по умолчанию, указывающий на /var/www/default/
и все домены отправляются на /var/www/[domain]
, например example.com
Я сидел /var/www/example.com/
.
Конфигурация Apache по умолчанию не такая, но обычно вы можете преодолеть это, mkdir -p /var/www/default
и адаптируем каталог, на который указывает конфигурация по умолчанию.