.htaccess“此处不允许选项”

时间:2011-08-17 17:33:42

标签: .htaccess options httpd.conf

我的.htaccess中有这个:

选项+ FollowSymLinks

我在apache error_log中收到以下错误:

.htaccess: Options not allowed here

这是我的httpd.conf文件中的部分:

#htdocs symlinks here
<Directory /Users/you/code/my/folder>
    Options All
    AllowOverride All
</Directory>

<Directory />
    Options All
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

<Directory "/Applications/XAMPP/xamppfiles/htdocs">
    Options All 
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

所以我在所有地方都设置了Options All和AllowOverride All,但是我仍然不允许设置选项。任何人都可以理解这个吗?

谢谢, MRB

9 个答案:

答案 0 :(得分:24)

请注意,这是特定于XAMPP的问题。 XAMPP加载一些位于XAMPP/etc/extra/中的覆盖httpd.conf的其他配置文件。对我来说,有问题的文件是http-userdir.conf,它为〜用户请求应用规则并包含行AllowOverride FileInfo AuthConfig Limit Indexes,并将该行更改为AllowOverride All确实解决了我的问题。

这仅适用于从OS X上的/ Sites /目录提供的文件。我不知道Windows版本是否完全使用UserDir,或者甚至有类似的规则。

答案 1 :(得分:4)

在我的情况下,我最终将文件httpd-vhosts.conf中的行AllowOverride AuthConfig FileInfo更改为AllowOverride All,此文件位于apache \ conf \ extra文件夹中

答案 2 :(得分:3)

您必须允许覆盖目录上下文中的“选项”。没有必要:

vhost/directory config:
    AllowOverride All

但只允许覆盖“选项”:

    AllowOverride {Existing options to override} +Options

答案 3 :(得分:1)

我猜你的apache配置中有一个全局AllowOverride设置,不允许这样做。你能在httpd.conf中找到AllowOverride吗?

答案 4 :(得分:1)

我刚刚安装了最新版本的XAMPP,并想分享我是如何解决同样的问题的。

这是XAMPP特定设置(每次安装新的XAMPP)。截至目前最新的XAMPP - XAMPP 1.8.3 在/xampp/apache/conf/extra/httpd-xampp.conf中设置了导致“服务器错误”消息的设置。 / p>

然后在错误日志中出现以下错误:

.htaccess: Options not allowed here

打开/xampp/apache/conf/extra/httpd-xampp.conf并找到:

<Directory "/xampp/htdocs/xampp">
    <IfModule php5_module>
        <Files "status.php">
            php_admin_flag safe_mode off
        </Files>
    </IfModule>
    AllowOverride AuthConfig
</Directory>

并更改

AllowOverride AuthConfig

<强>与

AllowOverride All

更改后不需要身份验证或授权,除非您在httpd.conf,extra confs或.htaccess中指定它。

您可能还想阅读选项AllowOverride http://httpd.apache.org/docs/current/en/mod/core.html#allowoverride的Apache文档,并选择更优化和安全的设置,以便您使用.htaccess而不会导致服务器错误。

另请注意,根据您希望实现的结果,您可以找到更好的地方重写上述规则。在我看来,这是一个令人满意的变化。

答案 5 :(得分:0)

您的域托管服务器是否满足Elgg所需的所有要求?特别是,mod_rewrite可用吗?

重新检查您已完成的所有步骤。

如果mod_rewrite正在运行...您是否可以访问服务器上Apache的配置(http.conf)?如果是,请添加以下行(调整路径):

   AllowOverride All

答案 6 :(得分:0)

而不是更改主httpd.conf文件中的全局AllowOverride设置,如果你有一个httpd-vhosts.conf文件,你可能希望在你需要的每个主机条目中放置特定于目录的AllowOverride All指令,所以你可以在服务器领域的其余部分保留限制性设置。

答案 7 :(得分:0)

在.htaccess文件的所有实例中将Options +FollowSymLinks更改为Options +SymLinksIfOwnerMatch,由于安全风险,许多服务器上的followymlinks已被禁用。

答案 8 :(得分:0)

在Debian 9上,我编辑了文件/etc/apache2/mods-available/userdir.conf

禁用此行 AllowOverride FileInfo AuthConfig限制索引

添加了这一行   全部允许覆盖

效果很好。

非常感谢所有贡献的人