Назад | Перейти на главную страницу

.htaccess игнорируется, а apache.config говорит, что он активирован

отредактирован для пояснения, потому что все ответы / комментарии, где говорится о другом, чем тема, до сих пор

Я проверил, что мой 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 действительно читал файлы с символическими ссылками, они должны быть доступны; в большинстве случаев это означает, что каталоги и файлы должны быть доступны для чтения всем, а каталоги - исполняемыми.