.htaccess "此处不允许的选项"

Posted

技术标签:

【中文标题】.htaccess "此处不允许的选项"【英文标题】:.htaccess "Options not allowed here" 【发布时间】:2011-10-29 03:32:08 【问题描述】:

我的 .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 ,但我仍然不允许设置该选项。任何人都可以理解这一点吗?

谢谢, B先生

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

另外,你也可以阅读httpd.apache.org/docs/current/es/mod/core.html#allowoverride。该文档可以帮助您定义 AllowOverride 的特定值;) 这对与this answer 结合使用很有帮助。【参考方案2】:

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

【讨论】:

【参考方案3】:

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

vhost/directory config:
    AllowOverride All

但仅允许覆盖“选项”:

    AllowOverride Existing options to override +Options

【讨论】:

您的意思是AllowOverride Existing options to override Options(不带+)吗? 是的。我在 httpd 手册页 httpd.apache.org/docs/2.4/mod/core.html#allowoverride 上找不到任何对“+”的引用,指的是 AllowOverride。【参考方案4】:

我猜你的 apache 配置中有一个全局 AllowOverride 设置不允许这样做。您可以在 httpd.conf 中使用 grep 获取 AllowOverride 吗?

【讨论】:

$ cat httpd.conf | grep "AllowOverride" AllowOverride All AllowOverride All AllowOverride All AllowOverride All 有没有可能我编辑了错误的 httpd.conf?我正在编辑/Applications/XAMPP/etc/httpd.conf 中的那个。如何找出 apache 正在使用哪个配置?编辑:使用正确的 httpd.conf,更改日志文件并开始登录到另一个文件..【参考方案5】:

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

这是特定于 XAMPP 的设置(每个新的 XAMPP 安装)。截至今天最新的 XAMPP - XAMPP 1.8.3 在 /xampp/apache/conf/extra/httpd-xampp.conf 中有一个设置会导致您的“服务器错误”消息。

然后您在错误日志中收到以下错误:

.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、额外的 confs 或 .htaccess 中指定它。

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

另外请记住,您可以根据您想要达到的结果找到更好的位置来重写上述规则。就我而言,这是一个令人满意的变化。

【讨论】:

感谢您的解释。直到今天仍然有效。【参考方案6】:

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

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

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

禁用此行 AllowOverride FileInfo AuthConfig 限制索引

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

而且效果很好。

非常感谢所有贡献者

【讨论】:

【参考方案9】:

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

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

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

允许覆盖所有

【讨论】:

请考虑在您提到“Elgg”时添加其他背景。我相信作者在原始问题的任何地方都没有提到该框架。

以上是关于.htaccess "此处不允许的选项"的主要内容,如果未能解决你的问题,请参考以下文章

父目录中的 htaccess 导致“此处不允许 RewriteEngine”

父目录中的 htaccess 导致“此处不允许 RewriteEngine”

WordPress 中的 .htaccess 错误:此处不允许重写引擎

Apache 服务器上的 500 错误 - “此处不允许允许覆盖”

此处不允许使用“set”指令

00984. 00000 - “此处不允许列”