2009-08-26 135 views
2

好吧,我還有一個問題,我是這個初學者。如何將這兩個.htaccess重寫規則合併爲一個?

我有這樣的重寫規則,它正確地重定向查詢,但不允許我使用其他目錄:

RewriteRule ^([0-9A-Za-z]+)/?$ /query.php?id=$1 [L] 

現在這個重寫規則跳過所有這些目錄,但現在上面的規則必須是註釋掉這個工作。

RewriteRule ^(css|js|admin|pages|includes|images)(/|$) - [L] 

我可以將兩者結合嗎?如果是這樣,怎麼樣?

+1

難道是操作的順序嗎?所以如果我把第一個重寫小冊子放在第二個小冊子後面,它會起作用嗎? – 2009-08-26 19:41:32

回答

4

RewriteRule s按它們在文件中出現的順序進行檢查,因此如果先將css|js|admin|pages|includes|images規則放在第一位,它將首先匹配並在達到其他規則之前停止重寫過程。只要確保將[L]標誌保留在該規則的末尾即可。

+0

謝謝,只需要確認我所看到的是正確的 – 2009-08-26 19:47:02

0

還有這絕招:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+) query.php?id=$1 [L] 

也就是說,如果文件路徑是不是存在的文件或目錄,將請求發送到一個PHP腳本(這樣你就可以動態地或顯示加載一些模塊一個有用的404頁面)。

+0

謝謝,所以這就像404重定向?我在哪裏放置自定義404頁面? – 2009-08-26 19:48:25

+0

它重定向到PHP腳本的所有內容(這不是文件或目錄),這意味着你可以在那裏處理它。如果通過某些內部例程確定請求的URI不存在,則可以發送404狀態錯誤和錯誤頁面內容。 – djc 2009-08-26 20:07:46