2013-11-22 68 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」,即所有。