Debian 7.8 上的 Apache 2.4.9-不允许使用 .htaccess 选项

Debian 7.8 上的 Apache 2.4.9-不允许使用 .htaccess 选项

我是管理在 Debian 7.8 上运行的 Apache 2.4.9 Web 服务器的团队的一员。我们的一个用户网站遇到了问题:

www.example.com/~user

当我们尝试访问此 URL 时,将加载包含以下内容的页面:

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。

请联系服务器管理员 webmaster@localhost 并告知他们错误发生的时间以及可能导致错误的任何操作。

有关此错误的更多信息可能在服务器错误日志中提供。Apache/2.2.22 (Debian) 服务器位于 www.cpdee.ufmg.br 端口 80

/var/log/apache2/error.log发现:

[Fri Apr 03 11:36:36 2015] [alert] [client 179.214.195.80] /home/web/user/.htaccess: Options not allowed here

如果我查看 /home/web/user/.htacces 文件的内容,就会发现只有这行配置:

Options -Indexes

经过快速研究,我发现这个问题与 Apache 的虚拟主机配置有关。具体来说,本教程说可以通过在 /etc/apache2/sites-enabled/000-default 的“AllowOverride”列表中添加“Options”来解决此问题,如下所示:

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

此文件只是一个/etc/apache2/sites-available/default文件链接,就我而言,此文件看起来有点混乱:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride Options
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride Options
                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>

根据建议,我将其添加OptionsAllowOverried列表中(针对<Directory> ... </Directory>我在那里找到的每个“标签”)。然后我启用了更改并使用以下一组命令重新加载了 Apache:

a2ensite default
/etc/init.d/apache2 reload

即使进行了这些更改,我仍然遇到同样的问题,我不知道到底出了什么问题。有人能帮我解决吗?

答案1

检查是否有更具体的配置userdir.conf覆盖您在中指定的设置<Directory />。在为 userdir/etc/apache2/mods-enabled/userdir.conf指定的Directory指令中,默认值为:

<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root

        <Directory /home/*/public_html>
                AllowOverride FileInfo AuthConfig Limit Indexes
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                <Limit GET POST OPTIONS>
                        Order allow,deny
                        Allow from all
                </Limit>
                <LimitExcept GET POST OPTIONS>
                        Order deny,allow
                        Deny from all
                </LimitExcept>
        </Directory>
</IfModule>

所以你应该在这里添加Options指令AllowOverride

(可能你的目录是<Directory /home/web/*/>这样的。)

相关内容