Answers:
如果您使用的是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上。希望对某些人有用。
IncludeOptional conf-enabled/*.conf
的最后一行有一个apache2.conf
。但似乎apache2.conf
优先。
AllowOverride
apache 的主要目标是管理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
文件。
转到在记事本中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>
然后重新启动本地服务器。
Order allow,deny
,Allow from all
并且适用于Apache 2.2和更早版本。在Apache 2.4中,这两行被替换Require all granted
为其他答案所示。
在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>
如果您使用的是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
我认为您想在httpd.conf
文件而不是.htaccess
文件中设置它。
我不确定您使用的是什么操作系统,但是Ubuntu的此链接可能会为您提供一些指示。
https://help.ubuntu.com/community/EnablingUseOfApacheHtaccessFiles
正如其他用户在此处说明的allowoveride指令的用法一样,该指令用于授予.htaccess用法的权限。我想指出的一件事是,如果其他用户有权写.htaccess,则永远不要使用allowoverride,而要使用allowoveride来允许某些模块。
如AllowOverride AuthConfig mod_rewrite
代替
AllowOverride All
因为像mod_mime这样的模块可以将服务器端文件呈现为纯文本格式。
SuSE Linux企业服务器
确保您正在编辑正确的文件 https://www.suse.com/documentation/sles11/book_sle_admin/data/sec_apache2_configuration.html
httpd.conf
主Apache服务器配置文件。避免更改此文件。它主要包含include语句和全局设置。覆盖此处列出的相关配置文件中的全局设置。在虚拟主机配置中更改特定于主机的设置(例如文档根目录)。
在这种情况下,vhosts.d/*.conf
必须进行编辑
加上那些赞成的正确答案,有时会由于Web服务器配置的不匹配和不同设置SSL
而看到相同的错误。(很明显,当不使用.htaccess
文件时)。
<Directory>
指令需要一个路径参数。