如何设置AllowOverride全部
我想设置AllowOverride all
但是我不知道该怎么做。 我find了下面的代码,通过search谷歌和粘贴在.htaccess中
<Directory> AllowOverride All </Directory>
但粘贴后,我开始收到"Internal Server Error"
任何人都可以指导我在哪里把这个代码或如何做到这一点?
如果你在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
来启用模块重写。
AllowOverride
的主要目标是Apache主要configuration文件的pipe理器(主要是/ etc / apache2 /中的主要configuration文件)来决定应用程序的哪一部分configuration可以根据每个path进行dynamic修改。
如果您不是服务器的pipe理员,则您将依赖于这些pipe理员允许的AllowOverride级别。 这样他们可以防止你改变一些重要的安全设置;
如果您是主Apacheconfigurationpipe理器,则应始终使用AllowOverride None
并将基于.htaccess文件的所有基于google_based的示例转移到主configuration文件上的Directory
部分。 由于/my/path/to/a/directory
.htaccess
文件的.htaccess内容与<Directory /my/path/to/a/directory>
指令相同,不同之处在于.htaccess
dynamicper-HTTP – 请求configuration更改是减慢您的Web服务器。 总是喜欢静态configuration没有.htaccess
检查(你也将避免通过.htaccess
改变的安全攻击)。
顺便说一下,在你的例子中,你使用<Directory>
,这将永远是错误的,目录指令总是包含一个path,如<Directory />
或<Directory C:>
或<Directory /my/path/to/a/directory>
。 当然这不能放在一个.htaccess
因为.htaccess
就像一个目录指令,但是存在于这个目录下的一个文件中。 当然,你不能改变.htaccess
AllowOverride
,因为这条指令是pipe理.htaccess
文件的安全级别 。
在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 None更改为AllowOveride All
现在你可以在你的目录中的.httacess文件中设置任何types的规则,如果其他操作系统试图findhttpd.conf文件并编辑它。
转到your_severpath/apache_ver/conf/
在记事本中打开文件httpd.conf
。
find这一行:
#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>
然后重新启动本地服务器。
我想你想把它设置在你的httpd.conf
文件中而不是.htaccess
文件中。
我不知道你使用的是什么操作系统,但是这个Ubuntu的链接可能会给你一些关于如何做的指示。
https://help.ubuntu.com/community/EnablingUseOfApacheHtaccessFiles
正如其他用户在这里解释了allowoveride指令的用法,该指令用于授予.htaccess使用权限。 有一件事我想指出,如果其他用户有权访问写入.htaccess,而不是使用allowoverride,则允许使用某些模块。
如AllowOverride AuthConfig mod_rewrite
而不是
AllowOverride All
因为像mod_mime这样的模块可以将你的服务器端文件呈现为纯文本。
我也遇到了这个问题,我发现解决scheme为2步骤如下:1.在apache2的启用站点的文件夹中,通过设置“AllowOverride all”(应该是“all”而不是none)来编辑Directory元素。在www文件夹中的kohana项目中,将“example.htaccess”重命名为“.htaccess”
我在Ubuntu上做到了。 希望它能帮助你。
SuSE Linux Enterprise Server
确保您正在编辑正确的文件https://www.suse.com/documentation/sles11/book_sle_admin/data/sec_apache2_configuration.html
httpd.conf文件
主要的Apache服务器configuration文件。 避免改变这个文件。 它主要包含包含语句和全局设置。 覆盖此处列出的相关configuration文件中的全局设置。 在虚拟主机configuration中更改主机特定的设置(如文档根目录)。
在这种情况下,必须编辑vhosts.d/*.conf