2013-01-19 36 views
10

我的問題是我的本地服務器上的我的.htaccess文件沒有被讀取。 VirtualHost文件中的設置似乎總是優先。如何獲得使用Apache VirtualHost的.htaccess文件

我曾嘗試以下:

  • 已啓用mod_rewrite
  • 改變了AllowOverrideAll但這會導致一個HTTP Error 500 Internal server error。我用各種選項嘗試過,但總是會導致500錯誤。

我使用它看起來像下面的Ubuntu的一個虛擬主機文件:

<VirtualHost *:80> 
ServerAdmin [email protected] 

DocumentRoot /web/website 
<Directory /> 
    Options FollowSymLinks 
    AllowOverride None 
</Directory> 
<Directory /web/website> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride None 
    Order allow,deny 
    allow from all 
</Directory> 
</VirtualHost> 

在我.htaccess文件/web/website下,我有以下規則(這不被讀取):

RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?/$1 [L] 
RewriteCond %{HTTP_USER_AGENT} ^facebookexternalhit 
RewriteRule ^(.*)$ ogtags.php?$1 [L,QSA] 
ErrorDocument 404 /404 
ErrorDocument 401 /401 

我嘗試過的一件事情是將這些規則直接附加到VirtualHost文件中,但我希望我的.htaccess文件能夠正常工作!這是一個很大的問題嗎? :(

編輯:。。?所以我看着我的Apache error.log,它說Invalid command 'Action', perhaps misspelled or defined by a module not included in the server configuration指我.htaccess文件似乎沒有成爲一個所謂的執行模塊,我可以讓任何想法

編輯2:我發現我的httpd.conf文件是空白如果這件事情,因爲我使用VirtualHost文件

+0

我試過註釋掉這些規則,但看起來並不像他們造成的問題。還有其他建議嗎?我認爲你是對的,但它必須是這些規則中的一個是錯誤的。我甚至嘗試評論所有的規則,並再次沒有效果!所以我不知道還有什麼可以嘗試的! –

+0

嗯,但這些規則在現場服務器上正常工作,包括404s。所以在我的本地apache安裝程序中一定有其他的東西是錯誤的。 –

+0

''httpd.conf''用於添加用戶配置,它包含在''apache2.conf''文件中。它默認爲空白。 – cyberhicham

回答

6

看着我的Apache error.log後,我意識到我剛啓用的Apache actions模塊:

須藤a2enmod行動

而且沒有更多的500內部服務器錯誤!

希望這可以幫助某人下線:)

1

你錯過RewriteBase /指令

添加它RewriteEngine指令後:

RewriteEngine On 
RewriteBase/
+0

這並沒有改變任何東西,仍然'HTTP錯誤500內部服務器':( –

+2

檢查日誌通常在''/ var/log/apache2/error.log'' – cyberhicham

+0

謝謝!更新了我的問題 –