Я задавал подобный вопрос перед Restrict access to directories through ip addressЗапретить доступ к файлам через IP-адрес - апач 2,4
в то время эта проблема была решена для апача 2.2. Недавно я снова установил ОС (в Debian 8), и он поставляется с apache 2.4.
Я хочу ограничить доступ к файлам - когда запрос приходит "по" IP. В основном, если в браузере я пытаюсь открыть http://192.168.252.178/test/image.jpg
, он должен показать ошибку - 403 запрещено. Каталог test
находится в www
каталоге apache. Однако я должен иметь доступ к этому изображению, если я нахожу http://www.example.com/image.jpg
- учитывая, что example.com
указывает на то, что test
.
С апача версии 2.2, я бы просто поставить эти строки в моем умолчанию файл сайта конфигурации - и проблема была решена
<Files ~ ".+">
Order allow,deny
Deny from all
</Files>
Теперь, пытаясь то же самое не работает: Я получаю 403 запрещен, даже если Я пытаюсь открыть любой сайт по доменному имени.
Учитывая изменения в 2.4, я также пробовал это, но снова получал тот же 403, который запрещался при попытке открыть какой-либо сайт.
<Files ~ ".+">
Require all denied
</Files>
Моя цель состоит в том, чтобы не допустить каких-либо доступ к папкам и файлам - если они в настоящее время доступны через IP-адрес. У меня также есть эта строка в моей конфигурации сайта по умолчанию, чтобы предотвратить доступ к каталогу, и это работает нормально.
<Directory /home/username/www>
Options -Indexes
AllowOverride All
Require all granted
</Directory>
Итак, вопрос в том, как предотвратить доступ к файлам через IP-адрес. Также мне нужно достичь этого с помощью apache config, на htaccess
не является решением для меня. И мне нужно добиться этого для всех каталогов/файлов внутри www
рекурсивно, поэтому определение точных имен файлов и/или каталогов также не является решением.
Благодаря
Вы используете Apache [имя на основе VirtualHosts] (https://httpd.apache.org/docs/2.4/en/vhosts/)? Мне кажется, они идеально подходят для решения вашей проблемы: один VHost на сайт ('site1',' site2', ...) и один «catchall», который ловит все остальные запросы, поэтому запрос, сделанный на IP-адрес адрес тоже. Вы можете определить другой DocRoot для каждого из этих сайтов и очень легко закрыть все запросы на IP-адрес. – Zimmi
@ Zimmi, спасибо за комментарий, да на самом деле у меня есть несколько доменов на ip, но не могли бы вы разместить пример того, что вы имеете в виду? спасибо – dav