2013-02-02 110 views
0

我正在嘗試Apache重寫引擎,但遇到問題,因爲它緩存了它的響應。現在,如果我更改文件,它不會執行該文件所說的內容,而是執行之前嘗試使用相同網址時的操作。Apache緩存URL,RewriteEngine導致問題

例如,我試着在

localhost/api 

打字,但我還沒有設定一個規則,會匹配。服務器給了我一個404錯誤。我試圖添加一個規則,這將與該網址一起工作:

RewriteRule api/? api.php [L] 

但它仍然給了我同樣的錯誤。如果我嘗試使用localhost/lapi之類的地址,但在添加規則之前我沒有輸入該地址,它可以正常工作。有沒有辦法清除這個緩存並重新啓動?我嘗試使用apachectl -k restartapachectl -k graceful重新啓動Apache,但我仍然有同樣的問題。有誰知道如何解決這個問題?

回答

0

首先,這取決於您的規則的情況下,你可能需要一個斜線,如:

RewriteRule api/? /api.php [L]

關於緩存,你已經啓用mod_cache?如果是這樣,請將其禁用並重新啓動服務器。 mod_rewrite本身不執行任何緩存。另外,請務必徹底清除瀏覽器緩存,並注意,如果您未通過同一本地網絡訪問您的服務器,則可能還會發生其他緩存。

0

此問題也可能是由MultiViews選項引起的,請參閱Apache doc。嘗試省略Option MultiViewshttpd.conf或添加Options -MultiViews.htaccess

MultiViews選項使Apache能夠根據HTTP請求中存在的文件擴展名和內容首選項(即你可能不希望發生的情況)在幾個版本的文件之間自動選擇。當重寫規則剛剛刪除腳本的擴展名時,這種bizzare失敗)。