【问题标题】:.htaccess "Options not allowed here".htaccess "此处不允许的选项"
【发布时间】: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先生

【问题讨论】:

    标签: .htaccess options httpd.conf


    【解决方案1】:

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

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      vhost/directory config:
          AllowOverride All
      

      但仅允许覆盖“选项”:

          AllowOverride {Existing options to override} +Options
      

      【讨论】:

      【解决方案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”时添加其他背景。我相信作者在原始问题的任何地方都没有提到该框架。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-04
            • 2018-02-28
            • 2014-05-28
            • 2016-04-05
            • 2013-08-26
            • 2012-10-27
            相关资源
            最近更新 更多