.htaccess выдает ошибку 500 при большинстве изменений

Следующий код работает:

AuthUserFile /etc/apache2/.htpasswd
AuthType Basic
AuthName "Please enter the username and password"
Require valid-user

Следующее не делает:

AuthUserFile /etc/apache2/.htpasswd
AuthType Basic
AuthName "Please enter the username and password"
Require valid-user
<Directory /var/www/e>
    Satisfy any
</Directory>

И я не имею в виду, что он выбрасывает ошибку 500 по умолчанию на сервере.

Я делаю это в попытке получить ErrorDocument для страницы 403, но каждый раз, когда я указываю одну, мне выдается ошибка 500. Первоначально я думал, что это, вероятно, потому что 403.html документ, на который я пытался сослаться, был защищен паролем, но это не так.

Следующий код также выбрасывает 500:

AuthUserFile /etc/apache2/.htpasswd
AuthType Basic
AuthName "Please enter the username and password"
Require valid-user
ErrorDocument 403 http://google.com

Соответствующее считывание файлов? (Я думаю?) Мои извинения за то, что я так новичок в этом.

root@####:~# cat /etc/apache2/sites-available/default
<VirtualHost *:80>
    ServerAdmin webmaster@localhost

        DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride none
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride AuthConfig
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride none
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
root@#####:~#

Я просто хочу создать документ 403, и было бы очень полезно указывать в любом направлении. Я снова извиняюсь за то, насколько это может показаться упрощенным, мой гугл-фу недостаточно силен, чтобы найти ресурс, который точно соответствует "создание ошибки 403, htaccess вызывает ошибку 500"

1 ответ

<Directory> Директивы разрешены только в контексте сервера (т. е. httpd.cont, apache2.conf, конфигурации виртуальных хостов или аналогичные файлы конфигурации на уровне сервера для вашей ОС).

Это имеет смысл, когда вы думаете об этом, так как .htaccess Уже в контексте каталога.

Проверьте эту ссылку для получения дополнительной информации о Directory директива: http://httpd.apache.org/docs/2.2/mod/core.html

Я угадываю твои ErrorDocument директива не работает, потому что у вас нет AllowOverride FileInfo установить для каталога в вашем файле conf. Это необходимо для включения ErrorDocument и других директив на уровне файлов в указанном каталоге.

Смотрите эту ссылку для получения дополнительной информации о AllowOverride: http://httpd.apache.org/docs/current/mod/core.html

Если у вас нет особой причины для включения .htaccessвы могли бы рассмотреть возможность их <Directory> блоки в файле conf и создание AllowOverride знак равно none для всех каталогов. Это лучше с точки зрения производительности. Поскольку серверу не нужно проверять каждый каталог в иерархии запроса, чтобы найти .htaccess инструкции.

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