2011-03-18 41 views
35

我如何可以執行的規則,如果URL不匹配的路徑「論壇」重寫規則,如果條件不匹配

例如:

的RewriteCond如果URL不是論壇

重寫規則(JS | GIF | CSS | JPG | PNG)!$ %{DOCUMENT_ROOT}的index.php [L]

回答

48

Apache的RewriteCond因爲我們LL作爲RewriteRule指令支持感嘆號指定非匹配模式:「!」

您可以 前綴的模式串字符(感嘆號)到 指定了一個不匹配的模式。

這應該工作:

RewriteCond %{REQUEST_URI} !^/forums.* 
RewriteRule !\.(js|gif|css|jpg|png)$ /index.php [L] 

- >重定向所有請求不論壇並沒有隨着上市就足夠了結束開始到index.php

+10

值得一提的是順序處理是 (1)檢查RewriteRule的匹配模式,然後,只有匹配時: (2)回到第一個關聯的RewriteCond並檢查它是否匹配。 (並繼續隨後的任何RewriteConds)。 所以在上面的例子中,按時間順序的描述是 對於所有請求不以(.js,.gif,.css,.jpg,.png)結尾的 ...其URL不是以「 /論壇「 ...轉發到index.php(和,每[L],忽略任何後續的RewriteRules,否則可能會影響請求。) HTH :) – cweekly 2014-10-24 20:40:50

+0

@cweekly這似乎是[IIS mod_rewrite ](http://www.micronovae.com/ModRewrite/ref/RewriteCond.html) - 這是也適用於Apache的mod_rewrite? – marapet 2015-09-05 20:53:47

+0

[只有當URI的當前狀態與其模式匹配並且條件滿足時才使用該規則。](http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond)那麼訂單爲什麼重要? – 2016-12-04 03:28:15