2013-11-01 63 views
8

我有一個腳本的問題。它不適用於需要工作的htaccess文件。這是htaccess包含的內容。我試圖將它安裝在本地主機上。該代碼是:500內部錯誤與RewriteEngine上.htaccess本地主機與wamp

#AddType x-mapp-php5 .php 
#AddHandler x-mapp-php5 .php 

RewriteEngine ON 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php/$0 [PT,L] 
#RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA] 

Options All -Indexes 

如果我刪除此它的工作原理:

RewriteEngine ON 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php/$0 [PT,L] 
#RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA] 

但是這樣腳本加載,但每個頁面顯示錯誤404是否有解決這個問題的方法?

+0

因此'選項所有-Indexes'導致500錯誤?你能檢查你的Apache error.log嗎? – anubhava

回答

16

它看起來像你沒有加載重寫模塊。找到你的httpd.conf文件,並確保這條線(或類似的東西)未註釋:

LoadModule rewrite_module modules/mod_rewrite.so 
+0

我試過這個,但它只是導致了同樣的錯誤。 (Ubuntu 16.04。Django 1.10。WSGI。) – Deleet

+0

但是,這工作。 http://stackoverflow.com/a/18161348/3980197奇怪的是,我可以通過shell命令啓用它,但不能通過設置。 – Deleet

+0

不要忘記在做這個改變後重新啓動你的apache服務器! 'sudo apachectl restart'或者你所命令的任何東西。 – vars

1

我有同樣的問題。要取消註釋該行,請刪除該行前面的# LoadModule rewrite_module modules/mod_rewrite.so

在Wamp中爲我工作。

目錄中的httpd.conf文件:C:\ WAMP \ BIN \ apache的\ apache2.4.9 \的conf

2

檢查是否有apache的重寫模塊加載。

轉到wamp_manager - > apache - > modules並在列表中尋找rewrite_module。

如果它旁邊沒有TICK,請點擊它。 Apache會被反彈(停止,開始)。再試一次。

如果沒有加載所需的模塊,rewite引擎將無法工作。

0

這是一個解決方案,爲我解決了這個問題。重寫模塊始終處於啓用狀態,用於IfModule rewrite_module,權限已被授予,.htaccess內容正常,但仍嘗試使用重寫模塊時出現500錯誤。

In httpd.conf by default: 

This is a source of a 500 error if you try to use rewrite in .htaccess in some sub directory. 

` 
# Deny access to the entirety of your server's filesystem. You must 
# explicitly permit access to web content directories in other 
# <Directory> blocks below. 
# 

    <Directory /> 
     AllowOverride none 
     Require all denied 
    </Directory> 
`  

所以人們可能希望在特定的目錄中使用帶有重寫模塊的.htaccess。您可以爲該目錄添加一個<directory>塊。如果複製並粘貼目錄塊,則需要確保您要複製的塊的意圖對於要應用它的目錄是正確的。

所以對於我的意圖這個塊,導致403錯誤,但確實擺脫了500錯誤。

<Directory "c:/Apache24/htdocs/store"> 
    AllowOverride All 
    Options None 
    Require all granted 
</Directory> 


Changing to this solved the issue: 

<Directory "c:/Apache24/htdocs/store"> 
    AllowOverride All 
    Require all granted 
</Directory> 

我想這就是爲什麼這個問題很常見,但很少在這些線程中解決。如果我只是複製了一個不同的塊,輸入了我自己的塊,或者對我在做什麼有了解,這不會是一個問題。

我不能說這解決了每個人的問題,但我恨人們解決和運行W/O啓發我們其餘的人。所以對於那些犯我錯誤的人來說,這是答案。

相關問題