【问题标题】:How to Set AllowOverride all如何设置 AllowOverride all
【发布时间】:2013-09-15 10:22:25
【问题描述】:

我想设置AllowOverride all 但我不知道该怎么做。我通过搜索google找到了以下代码并将其粘贴到.htaccess

<Directory>
        AllowOverride All
</Directory>

但粘贴后我开始收到"Internal Server Error"

谁能指导我把这段代码放在哪里或者怎么做?

【问题讨论】:

标签: apache .htaccess


【解决方案1】:

如果您使用的是 Ubuntu,请编辑文件 /etc/apache2/apache2.conf(这里我们有一个 /var/www 的示例):

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

并将其更改为;

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

那么,

sudo service apache2 restart

您可能还需要执行sudo a2enmod rewrite 以启用模块重写。

【讨论】:

  • 我还需要使用sudo a2enmod rewrite,然后它就起作用了。在 Ubuntu 14.04 LTS 上。希望它对某些人有用。
  • 奇怪...当我这样做时,我得到内部服务器错误。这是否表明位于 /var/www/.htaccess 的 .htaccess 文件中有错误?将 apache2,conf 转回 AllowOverride None 可修复错误,但不允许 URL 重写。
  • 在 Ubuntu 12.04 中。我在 /etc/apache2/sites-available/default path 找到了这个文件
  • 如何从单独的文件中覆盖它?我可以看到我的apache2.conf 文件的最后一行有一个IncludeOptional conf-enabled/*.conf。但似乎apache2.conf 被优先考虑了。
  • 这对我来说很神奇。将我公司的 debian 服务器从 wheezy 更新为 jessie 后,apache 中的所有内容都停止工作,添加此内容后,一切都重新开始工作。
【解决方案2】:

AllowOverride 的主要目标是让 apache 的主要配置文件(主要位于 /etc/apache2/ 中的那个)的管理器决定配置的哪一部分可以在每个路径的基础上通过以下方式动态更改应用程序。

如果您不是服务器的管理员,则取决于这些管理员为您提供的AllowOverride 级别。这样他们就可以阻止您更改一些重要的安全设置;

如果您是主要的 apache 配置管理器,则应始终使用 AllowOverride None 并将您找到的所有基于 google_based 的示例(基于 .htaccess 文件)传输到主配置文件的 Directory 部分。作为/my/path/to/a/directory.htaccess 文件的.htaccess 内容与&lt;Directory /my/path/to/a/directory&gt; 指令相同,除了.htaccess 动态每个HTTP 请求配置更改会减慢您的Web 服务器。始终更喜欢没有.htaccess 检查的静态配置(您还可以避免.htaccess 更改造成的安全攻击)。

顺便说一下,您在示例中使用了&lt;Directory&gt;,这总是错误的,目录指令总是包含一个路径,例如&lt;Directory /&gt;&lt;Directory C:&gt;&lt;Directory /my/path/to/a/directory&gt;。当然,这不能放在 .htaccess 中,因为 .htaccess 就像是目录指令,但在此目录中存在的文件中。当然,您不能在 .htaccess 中更改 AllowOverride,因为该指令正在管理 .htaccess 文件的安全级别

【讨论】:

    【解决方案3】:

    转到your_severpath/apache_ver/conf/ 在记事本中打开文件httpd.conf

    找到这一行:

    #LoadModule vhost_alias_module modules/mod_vhost_alias.so

    删除井号:

    LoadModule vhost_alias_module modules/mod_vhost_alias.so

    然后转到&lt;Directory /&gt;

    并更改为:

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

    然后重启你的本地服务器。

    【讨论】:

    • 工作完成!泰先生!
    • 注: Order allow,denyAllow from all 用于 Apache 2.2 及更早版本。在 Apache 2.4 中,这两行被替换为 Require all granted,如其他答案所示。
    • 上面 regilero 的回答给出了令人信服的理由,包括效率和安全性,使用 AllowOverride None 并将所有内容从 .htaccess 文件中移出到配置文件中。
    【解决方案4】:

    在 Linux 上,为了放宽对文档根目录的访问权限,您应该编辑以下文件:

    /etc/httpd/conf/httpd.conf
    

    根据您想要放松访问的目录级别,您必须更改指令

    AllowOverride None
    

    AllowOverride All
    

    因此,假设您要允许访问 /var/www/html 目录中的文件,您应该更改以下行:

    <Directory "/var/www/html">
     AllowOverride None
    </Directory>
    

    <Directory "/var/www/html">
     AllowOverride All
    </Directory>
    

    【讨论】:

    • 然后重启服务器
    • 在反复检查了我的 .htacces 一百次之后 - 这就是解决方案!非常感谢。我想,“all”是apache配置的默认值。
    • 另外,在您的回答中提及 Linux 并不好。尽管这很旧,但我只想澄清您所说的是基于 Redhat 的发行版
    【解决方案5】:

    如果您使用的是Linux,您可以编辑目录中的代码

    /etc/httpd/conf/httpd.conf
    

    现在,在这里找到代码行有点像

    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
        AllowOverride None
    #
    # Controls who can get stuff from this server.
    #
        Order allow,deny
        Allow from all
    
    </Directory>
    

    AllowOveride None 更改为 AllowOveride All

    现在您可以在目录中的 .httacess 文件中设置任何类型的规则 如果任何其他操作系统只是尝试找到 httpd.conf 的文件并对其进行编辑。

    【讨论】:

    • 截至太平洋标准时间 2015Nov18 1539,当我在 Google 搜索“allowoverride”时,我在搜索结果上方看到一个框,显示如下:now here fine the code line kinda like # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. #Sep 11, 2013 apache - How to Set AllowOverride all - Stack Overflow stackoverflow.com/questions/18740419/how-to-set-allowoverride-all
    【解决方案6】:

    正如其他用户在此处解释的有关 allowoveride 指令的用法,该指令用于授予 .htaccess 使用权限。我想指出的一件事是,如果其他用户有权写入 .htaccess,则永远不要使用 allowoverride all,而是使用 allowoveride 来允许某些模块。

    比如AllowOverride AuthConfig mod_rewrite而不是

    AllowOverride All
    

    因为像 mod_mime 这样的模块可以将您的服务器端文件呈现为纯文本。

    【讨论】:

    • 谢谢!!这正是我一直在寻找的。我想将 windwalker.com.au 重定向到 windwanderer.com.au,因此我需要在 .htaccess 文件中允许此指令,仅此而已。总是将 AllowOverride ALL 放在显着的位置会降低我服务器的安全性。
    • 我在使用AllowOverride AuthConfig mod_rewrite 时得到Illegal override option mod_rewrite。根据文档,我看不出它如何被限制为允许某个模块。 httpd.apache.org/docs/2.4/mod/core.html#allowoverride
    【解决方案7】:

    我认为您想将其设置在您的 httpd.conf 文件中,而不是 .htaccess 文件中。

    我不确定您使用的是什么操作系统,但是这个 Ubuntu 的链接可能会为您提供一些指导。

    https://help.ubuntu.com/community/EnablingUseOfApacheHtaccessFiles

    【讨论】:

      【解决方案8】:

      在此处输入代码如果您使用的是 linux,则必须编辑

      `/etc/apache2/sites-available/000-default.conf`
      

      在 Documentroot 下。添加以下代码

      `<Directory /var/www/>
        AllowOverride all
        Require all granted
      </Directory>` 
      

      那么,

      `sudo service apache2 restart`
      

      你必须启用 apache mod rewrite

      `sudo a2enmod rewrite`
      

      【讨论】:

      • 如果将所有内容放在一行中,则会在执行“service apache2 restart”时生成“Job for apache2.service failed because the control process exited with error code”错误。插入不同的行会在浏览器中生成错误“Internal Server Error”。这不适用于我的安装。
      • 我之前的评论中提到的“内部服务器错误”是因为 .htaccess “RewriteBase /var/www/html/”中的无效指令,这对我来说看起来不错,但在删除它之后,错误消失了,我的问题也解决了。
      【解决方案9】:

      我也遇到了这个问题,我发现解决方案如下 2 步: 1.在apache2的sites-enabled文件夹中,通过设置“AllowOverride all”在Directory元素中进行编辑(应该是“all”而不是“none”) 2.在www文件夹的kohana项目中,将“example.htaccess”重命名为“.htaccess”

      我是在 ubuntu 上做的。希望对您有所帮助。

      【讨论】:

        【解决方案10】:

        SuSE Linux 企业服务器

        确保您正在编辑正确的文件 https://www.suse.com/documentation/sles11/book_sle_admin/data/sec_apache2_configuration.html

        httpd.conf

        主要的 Apache 服务器配置文件。 避免更改此文件。它主要包含包含语句和全局设置。覆盖此处列出的相关配置文件中的全局设置。在您的虚拟主机配置中更改主机特定设置(例如文档根目录)。

        在这种情况下vhosts.d/*.conf必须被编辑

        【讨论】:

          【解决方案11】:

          此外,由于 SSL 部分网络服务器配置的设置不匹配和不同,有时可能会看到相同的错误答案。 (很明显,当不使用.htaccess 文件时)。

          【讨论】:

            【解决方案12】:

            有几个答案,但这个问题有很多问题,我想解决这些问题:

            • 如果出现错误(例如 500),请查看日志文件(如果您可以访问它们)。例如/var/log/apache2/ssl_error.log

            例如

            cat /var/log/apache2/ssl_error.log
            [Tue Jun 01 19:05:34 2021] [alert] [pid 31154] config.c(2119): 
            [client *******] /var/www/mysite/public/tmp/.htaccess:
            <Directory not allowed here [lid YLZo3quRlv2EKOAABVoFLwAAAIM]
            
            • AllowOverrides 放在.htaccess 中没有任何意义,也是不允许的。见Context。另请参阅下面的解释。它应该在 Apache 配置中定义(例如/etc/apache2
            • 允许一切通常不是最好的主意。尽可能严格!
            • Directory 指令缺少目录,例如应该是&lt;Directory /var/www/html/etc&gt;
            • Directory 指令在 .htaccess 中没有意义。 .htaccess 在目录中的位置已经具有使其中的语句适用于特定目录的效果
            • 不要将旨在放入 Apache 配置(例如在 /etc/apache2/... 中)的 sn-ps 与旨在放入 .htaccess 中的语句混合和匹配 - 尽管大多数时候,它们将是相同,有一些细微差别
            • 如果您有可能直接修改 Apache 配置,请不要使用 .htaccess 并将其停用。 (出于性能等原因。您也可以将所有配置集中在一个地方,将其置于版本控制中或通过软件配置管理工具进行管理,例如 Puppet、Ansible、SaltStack)

            除非您确实无法直接访问和修改 Apache 配置,否则您不需要.htaccess。这是一个常见的误解。

            您看到 500 错误证明了我的观点。如果您直接在 Apache 配置中更改配置(而不是在 .htaccess 中),您通常会收到一条错误消息,其中包含有关错误和行号的解释和信息(例如,当您执行 service apache2 reloadapachectl configtest 时)。


            另外,请查看文档。这真的很好。对于大多数指令,您可以找到它们适用的位置(参见“上下文”)。

            例如对于IfModule,可以看到:

            上下文:服务器配置、虚拟主机、目录、.htaccess

            对于,AllowOverrides 是:

            上下文:目录

            请注意上下文中缺少的 .htaccess!

            不要在谷歌上搜索一遍又一遍重复相同错误的信息,而是查看文档!

            文档

            【讨论】:

              猜你喜欢
              • 2015-08-01
              • 2014-08-21
              • 2015-09-12
              • 1970-01-01
              • 2016-09-09
              • 2017-12-11
              • 2017-01-25
              • 1970-01-01
              • 2014-07-04
              相关资源
              最近更新 更多