Apache 服务器上的 500 错误 - “此处不允许允许覆盖”
Posted
技术标签:
【中文标题】Apache 服务器上的 500 错误 - “此处不允许允许覆盖”【英文标题】:500 Error on apache server - "AllowOverride not allowed here" 【发布时间】:2013-12-07 21:16:31 【问题描述】:我已经在我的 Mac (OSX 10.9) 上设置了一个服务器,但它在错误日志中返回 500 错误并显示以下消息...
[alert] [client ::1] /Users/user/Sites/mysite/.htaccess: AllowOverride not allowed here
这是我的 .htaccess 文件中的代码
Options +FollowSymLinks -MultiViews
AllowOverride All
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteMap lc int:toLower
RewriteCond %REQUEST_URI [A-Z]
RewriteRule (.*) $lc:$1 [R=301,L]
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^i/(.*)/(.*)-(.*)$ /items/?id=$1&range=$2&type=$3 [L,QSA,NC]
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^c/(.*)$ /category/?menu=$1 [L,QSA,NC]
这里是相关的 httpd.conf 代码(如果还有什么可以帮助的,请告诉我)
DocumentRoot "/Users/user/Sites/mysite"
<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
</Directory>
<Directory "/Users/user/Sites/mysite">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
有什么想法吗?
【问题讨论】:
从您的.htaccess
文件中取出 AllowOverride
指令。仅允许在 <directory>
部分中使用
【参考方案1】:
AllowOverride 控制 .htaccess-security 和 -behaviour,无法在 .htaccess 文件中设置。
从 .htaccess 中删除“AllowOverride All”,仅此而已。
【讨论】:
【参考方案2】:将 AllowOverride All 从您的 .htaccess 中删除。
【讨论】:
【参考方案3】:AllowOverride All
不属于 htaccess 文件。它在服务器配置 (httpd.conf) 中用于设置 htaccess 文件可以覆盖的服务器配置参数。所以很明显,能够从 htaccess 文件中配置 htaccess 文件可以覆盖的参数是错误的。
从您的 htaccess 文件中删除它。您已经在 httpd.conf 的正确位置定义了 AllowOverride All
。
【讨论】:
太棒了!谢谢。我现在收到关于 RewriteMap 行的相同消息。我应该把它移到哪里? @Tom RewriteMaps 也不能在 htaccess 文件中定义(但您可以在 htacces 文件中使用它们)。您需要在 httpd.conf 中定义它们,但在<Directory>
容器之外。以上是关于Apache 服务器上的 500 错误 - “此处不允许允许覆盖”的主要内容,如果未能解决你的问题,请参考以下文章
我的虚拟主机上的 Apache 500 内部服务器错误 [关闭]
我的虚拟主机上的 Apache 500 内部服务器错误 [关闭]
nginx 和 apache 上的 django:在哪里处理 404 和 500 错误?