отредактирован для пояснения, потому что все ответы / комментарии, где говорится о другом, чем тема, до сих пор
Я проверил, что мой apache.conf (Ubuntu) говорит, что он ищет .htaccess
и это позволяет .htaccess
чтобы переопределить все:
#...
AccessFileName .htaccess
#...
<Directory /var/www>
AllowOverride All
Options FollowSymlinks
</Directory>
Затем я поставил следующее .htaccess
(с правами 755) в мою /var/www
:
order allow, deny
deny from all
Затем я перезапустил свой сервер как root
чтобы убедиться, что конфигурация снова загружена и никакие права доступа к файлам не могут повредить моему эксперименту: sudo apache2ctl restart
В результате он все равно открывает папку, как будто бы не было .htaccess
. Что могло быть не так? Что еще я могу проверить, чтобы убедиться, что он работает правильно?
редактировать: Я также проверил, создает ли запись мусора сообщение об ошибке, и это не так!
<Directory />
AllowOverride All
</Directory>
Вы не должны этого делать; это ссылается на корень файловой системы.
Вместо этого определяйте разрешающие AllowOverrides только из корневого каталога документов.
(И, необязательно, в ваших UserDirs)
сервер ищет / var / www / в качестве своего веб-каталога, и внутри я связался с другой папкой в моем домашнем каталоге
Чтобы разрешить символическую ссылку, FollowSymLinks должен быть установлен для исходного каталога (в вашем случае / var / www)
Вместо этих небезопасных настроек используйте следующее:
<Directory />
AllowOverride None
Order allow,deny
Deny From All
</Directory>
<Directory /var/www>
AllowOverride All
Options FollowSymlinks
</Directory>
ОБРАТИТЕ ВНИМАНИЕ, что для того, чтобы apache действительно читал файлы с символическими ссылками, они должны быть доступны; в большинстве случаев это означает, что каталоги и файлы должны быть доступны для чтения всем, а каталоги - исполняемыми.