2013-08-07 45 views
0

我試圖添加到404條件的重寫規則的重寫條件。 例如:只匹配404條件與其他條件

only if (404) 
http://www.MyDomain.com/category_name/item_name.html 
then: 
http://www.MyDomain.com/category_name.html [L,R=301] 

我能做到簡單的重定向,但沒能檢測到錯誤條件... 真的很感激,更有經驗mod_rewrite的用戶提供這種的援助。 謝謝, Yanipan

回答

2

假設你是後如果請求的文件不存在(這通常會產生404服務器)來執行重定向,那麼它實際上是非常簡單的事:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule $([^/]*)/.+$ /$1.html [L,R=301] 

這是什麼東西做的是說,如果請求的文件名不是一個文件或目錄,那麼我們將改寫請求是路徑名的第一部分,與.html貼吧。

例如,請求http://example.com/some_cat/an_item.html,如果文件an_item.html不存在,該請求將被重寫爲:​​。

請注意,這也將在子目錄中生效,例如,請求http://example.com/some_cat/things/an_item.html將產生與上述示例相同的URI。


要了解的重要一點是造成404錯誤的原因。要理解這一點最簡單的方法是請求是針對不存在的項目,可以使用上面的RewriteCond行進行測試。

+0

正是我所需要的。在我做的prev搜索中找到了-f/-d,但也許在我的語法中出現了錯誤。謝謝你的幫助! – Yanipan