2013-11-22 51 views
5

我已经建立了一个服务器在我的Mac(OSX 10.9),但它返回一个500错误,在错误日志以下消息...500错误Apache服务器上 - 有“AllowOverride这里不允许”

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

任何想法?

+2

从''.htaccess'文件中取出'AllowOverride'指令。它只允许在''部分 – 2013-11-22 20:54:37

回答

9

AllowOverride All不属于htaccess文件。它在服务器配置(httpd.conf)中用于设置什么服务器配置参数htaccess文件可以覆盖。很明显,能够配置htaccess文件可以在htaccess文件中覆盖哪些参数是错误的。

将其从您的htaccess文件中删除。你已经在你的httpd.conf中正确定义了AllowOverride All

+0

太棒了!谢谢。我现在得到关于RewriteMap行的相同消息。我应该把它移到哪里? – Tom

+1

@Tom RewriteMaps无法在htaccess文件中定义(但您可以在htacces文件中使用它们)。您需要在httpd.conf中定义它们,但在** 012 ****之外**。 –

0

把AllowOverride全部取出.htaccess。

2

AllowOverride控制.htaccess-security和-behaviour,不能在.htaccess文件中设置。

从.htaccess中删除“AllowOverride All”,即所有。