2009-11-09 146 views
2

我在我的htaccess以下規則:的mod_rewrite規則不工作

RewriteRule ^([^/.]+)/?$ list.php?categoryShortForm=$1&locationShortForm=world  [QSA] 
RewriteRule ^([^/.]+)/([^/.]+)/?$ list.php?categoryShortForm=$1&locationShortForm=$2 [QSA] 
RewriteRule ^([^/.]+)/([^/.]+)/[^/.]*-p([0-9]+)/?$ view.php?categoryShortForm=$1&locationShortForm=$2&postingId=$3 [QSA] 

在我的本地主機(窗口,XAMPP),這一切工作正常。 在我真正的服務器(linux,apache)中,前2條規則正常工作,但沒有第三條規則。

例如:

/plastic-surgery/california-usa/工作正常,但 /plastic-surgery/los-angeles-california-usa/test-1-p1給了我一個404

任何想法?

+2

你確定view.php存在於服務器上嗎? – Greg 2009-11-09 22:51:07

+0

你真的在使用Apache 2嗎?如果是這樣的話,我已經在某個地方看到它與之前的版本有一些變化。 – yoda 2009-11-09 22:52:05

+0

您是否嘗試過查看您的apache服務器日誌以獲取更詳細的錯誤消息? – jkndrkn 2009-11-09 22:54:27

回答

1

檢查以確保您可以直接瀏覽到目標網址。如果mod_rewrite重寫到不存在的東西上,你會得到那個404.這可能有助於將mod_rewrite的日誌級別提升到一個很高的值,這樣你就可以看到它重寫的內容。

+1

*我*笨* *!我沒有上傳目標文件view.php。謝謝! – 2009-11-09 22:55:48

0

我有點不清楚你的工作網址應該如何工作。所有三種模式都以「一個或多個非斜槓,非句號字符」([^ /。] +)開頭,但進入模式匹配的URL以斜線開頭:「/ plastic-surgery/california-usa/」。

你打開mod_rewrite日誌記錄,並檢查出mod_rewrite實際上在做什麼?

RewriteLog "/tmp/rewrite.log" 
    RewriteLogLevel 9