【问题标题】:500 Error on apache server - "AllowOverride not allowed here"Apache 服务器上的 500 错误 - “此处不允许允许覆盖”
【发布时间】: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 指令。仅允许在 &lt;directory&gt; 部分中使用

标签: php macos apache .htaccess httpd.conf


【解决方案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 中定义它们,但&lt;Directory&gt; 容器之外
      猜你喜欢
      • 2016-04-05
      • 2013-04-15
      • 2016-09-05
      • 2020-03-31
      • 2018-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多