如何设置AllowOverride全部


161

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

<Directory>
        AllowOverride All
</Directory>

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

谁能指导我将此代码放在何处或如何执行?


3
<Directory>指令需要一个路径参数。
FKEinternet

Answers:


317

如果您使用的是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启用模块重写的操作。


55
我还需要使用sudo a2enmod rewrite,然后它起作用了。在Ubuntu 14.04 LTS上。希望对某些人有用。
Jonauz 2014年

2
奇怪...当我这样做时,我收到内部服务器错误。这是否表明位于/var/www/.htaccess的.htaccess文件中存在错误?将apache2,conf改回AllowOverride None可修复该错误,但不允许URL重写。
o_O 2014年

在Ubuntu 12.04中。我发现这个文件在/等/ apache2的/网站可用/默认路径
عثمانغني

如何从单独的文件中覆盖?我可以看到文件IncludeOptional conf-enabled/*.conf的最后一行有一个apache2.conf。但似乎apache2.conf优先。
JohnnyQ

这为我做魔术。将我公司的debian服务器从Wheezy更新到jessie之后,apache中的所有内容均停止工作,添加后,一切又重新开始工作。
–peritket2000

51

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

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

如果您是Apache主配置管理器,则应始终使用AllowOverride None并将基于.htaccess文件找到的所有基于google_example的示例转移到Directory主配置文件中的各个部分。由于.htaccess文件中的.htaccess内容/my/path/to/a/directory<Directory /my/path/to/a/directory>指令相同,除了.htaccess动态的按HTTP请求配置更改会减慢Web服务器的速度。始终喜欢没有.htaccess检查的静态配置(并且您还将避免通过.htaccess更改进行安全攻击)。

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


17

转到在记事本中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

然后转到 <Directory />

并更改为:

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

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


任务完成!泰先生!
James Walker

6
注意Order allow,denyAllow from all并且适用于Apache 2.2和更早版本。在Apache 2.4中,这两行被替换Require all granted为其他答案所示。
FKEinternet

13

在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>

8
并在
Daniel

经过一百次仔细检查我的.htacces,这才是解决方案!非常感谢你。我以为,“ all”是apache配置的默认值。
Matthias Kleine

另外,在您的答案中提到Linux也不好。即使这已经很老了,我只想澄清一下您所说的是针对基于Redhat的发行版
Chi.CJRajeeva Lochana

11

如果您使用的是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无更改 为AllowOveride All

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


截至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
2015年


5

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

AllowOverride AuthConfig mod_rewrite代替

AllowOverride All

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


1
谢谢!!这正是我要寻找的。我想将windwalker.com.au重定向到windwanderer.com.au,因此我需要在.htaccess文件中允许该指令,并且什么也没有。始终放置AllowOverride ALL会大大降低服务器的安全性。
Jesse the Wind Wanderer's

1

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

我在ubuntu上做到了。希望对您有帮助。



0

加上那些赞成的正确答案,有时会由于Web服务器配置不匹配和不同设置SSL而看到相同的错误。(很明显,当不使用.htaccess文件时)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.