.htaccess在大多数编辑时抛出500错误

时间:2014-03-21 20:10:56

标签: apache .htaccess password-protection errordocument

以下代码 WORKS

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错误。

我正在尝试为403页面创建一个ErrorDocument,但是只要我指定一个,它就会给我一个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文档,指向任何方向都会非常有帮助。我再次道歉这看起来有多么简单,我的google-fu只是不够强大,无法找到准确匹配的资源“创建403错误htaccess导致500错误”

1 个答案:

答案 0 :(得分:1)

<Directory>指令仅允许在服务器上下文中使用(即httpd.cont,apache2.conf,虚拟主机配置或操作系统的类似服务器级配置文件)。

当你考虑它时,这是有意义的,因为.htaccess已经在目录上下文中。

查看此链接,了解有关Directory指令的更多信息:http://httpd.apache.org/docs/2.2/mod/core.html#directory

我猜您的ErrorDocument指令无效,因为您没有为conf文件中的目录设置AllowOverride FileInfo。这是在指定目录中启用ErrorDocument和其他文件级指令所必需的。

有关AllowOverridehttp://httpd.apache.org/docs/current/mod/core.html#allowoverride

的详情,请参阅此链接

除非您有特定理由在.htaccess中放置指令,否则您可以考虑将它们放在conf文件中的<Directory>块中并使AllowOverride = none对于所有目录。从性能角度来看,这更好。由于服务器不需要检查请求层次结构中的每个目录以查找.htaccess指令。