如何设置允许覆盖所有

我想设置 AllowOverride all,但我不知道怎么做。我已经找到了下面的代码通过搜索的谷歌和粘贴它在 .htaccess:

<Directory>
AllowOverride All
</Directory>

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

有人能指导我把这个代码放在哪里或者怎么做吗?

639508 次浏览

我认为您应该在 httpd.conf文件中设置它,而不是在 .htaccess文件中设置它。

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

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

AllowOverride的主要目标是让 apache 的主配置文件管理器(主要在/etc/apache2/中找到)决定配置的哪一部分可以被应用程序根据每个路径动态修改。

如果您不是服务器的管理员,则依赖于这些管理员允许的 允许覆写级别。这样他们就可以防止你改变一些重要的安全设置;

如果你是主 apache 配置管理器,你应该总是使用 AllowOverride None和传输所有基于 google 的例子,你发现,基于。Htaccess 文件到主配置文件上的 Directory部分。作为一个。在 /my/path/to/a/directory中,.htaccess文件的 htaccess 内容与 <Directory /my/path/to/a/directory>指令相同,只不过 .htaccess动态的每 HTTP 请求配置改变会降低 Web 服务器的速度。总是喜欢没有 .htaccess检查的静态配置(您还可以通过 .htaccess的修改避免安全性攻击)。

顺便说一下,在您的示例中,您使用的是 <Directory>,这将始终是错误的,目录指令总是包含一个路径,如 <Directory /><Directory C:><Directory /my/path/to/a/directory>。当然,这不能放在 .htaccess中,因为 .htaccess类似于 Directory 指令,而是放在这个目录中的文件中。当然,您不能在 .htaccess中更改 AllowOverride,因为这条指令管理的是 .htaccess文件的 安全级别

我也遇到了这个问题,我找到了下面两步的解决方法: 1. 在 apache2的站点启用文件夹中,通过设置“ AllowOverride all”(应该是“ all”而不是“ none”)在 Directory 元素中进行编辑 2. 在 Kohana 项目的 www 文件夹中,将“ example.htaccess”重命名为“ . htaccess”

我在 ubuntu 上做的,希望对你有所帮助。

如果你在 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来启用模块重写。

如果您正在使用 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>

允许覆盖无改为 允许覆盖所有

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

在 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>
< p > 后藤 your_severpath/apache_ver/conf/ 在记事本中打开文件 httpd.conf

找到这条线:

# LoadModule vhost _ alias _ module module/mod _ vhost _ alias. so

删除散列符号:

LoadModule vhost _ alias _ module module/mod _ vhost _ alias. so

那就去 <Directory />

改为:

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

然后重新启动本地服务器。

Linux 企业服务器

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

Http://httpd.conf/

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

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

正如其他用户在这里解释的 allowoveride 指令的用法,该指令用于授予。Htaccess 使用情况。有一点我想指出的是,如果其他用户有权写入,那么永远不要使用 allowoverover all。相反,htaccess 使用 allowoveride 来允许某些模块。

例如 AllowOverride AuthConfig mod_rewrite代替

AllowOverride All

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

加上那些正确的答案,有时相同的错误可以看到,因为 不匹配和不同的设置对 SSL部分的网络服务器配置。(显然,当不使用 .htaccess文件)。

在这里输入代码如果你正在使用 linux,你必须编辑

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

添加以下代码

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

那么,

`sudo service apache2 restart`

你必须启用 apache mod 重写

`sudo a2enmod rewrite`

这个问题有几个答案,但有一些问题是错误的,我想解决这些问题:

  • 如果您得到一个错误(例如500) ,查看日志文件(如果您有访问它们的权限)

例如:。

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 没有意义,也不被允许。见 背景。请看下面我的解释。它应该在 Apache 配置中定义(例如 /etc/apache2)
  • 允许一切通常不是最好的主意。尽可能地限制!
  • Directory指令缺少一个目录,应该是例如 <Directory /var/www/html/etc>
  • Directory指令在 .htaccess中没有意义。.htaccess在目录中的位置已经产生了将目录中的语句应用于特定目录的效果
  • 不要将打算放在 Apache 配置中的代码片段(例如,在 /etc/apache2/...中)与打算放在 .htaccess中的语句混合和匹配——尽管大多数情况下它们是相同的,但还是有一些细微的差别
  • 如果您有可能直接修改 Apache 配置,请不要使用 .htaccess并停用它。(出于表现原因,以及其他原因)。你也可以把所有的配置放在一个地方,把它放在版本控制中,或者通过一个软件配置管理工具来管理它,例如 Puppet、 Anble、 SaltStack)

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

你看到一个500的错误证明了我的观点。如果您直接在 Apache 配置中更改配置(而不是在。Htaccess) ,您通常会得到一个错误消息,其中包括错误的解释和有关行号的信息(例如,当您执行 service apache2 reloadapachectl configtest时)-这使您有可能在生产中应用此错误之前修复该错误(!).


另外,查看文档。真的很不错。对于大多数指令,您可以找到它们应用的位置(参见“ Context”)。

例如,对于 IfModule,您可以看到:

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

对于 允许覆盖来说,它是:

上下文: 目录

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

与其在谷歌上搜索那些一遍又一遍重复同样错误的信息,不如查看文档!

医生