2011-07-04 39 views
0

嗨。我是新來mod_rewrite的,想知道是否有可能做到以下幾點:mod_rewrite條件的基本幫助

RewriteRule ^([^/]*)$ index.php?slug=$1 

此規則將指向只在index.php文件,但如果我想要做的另一個規則,指向一個特定的蛞蝓,以不同的腳本,即

RewriteRule ^a-new-page$ different.php 

這是行不通的,因爲第一條規則聲明瞭任何輸入的內容都應該指向索引。

是否有辦法強制該特定slu new的新規則?

回答

1

是的,這是可能的 - 只需將這些特定的規則以前通用/廣義的(在規定的聲明事項的順序):

RewriteRule ^a-new-page$ different.php 
RewriteRule ^([^/]*)$ index.php?slug=$1 

也請注意廣泛的共同原則 - - 他們可能會進入一個重寫循環(在重新編寫新的URL進入下一次迭代之後,並且如果規則編寫不正確,它可能會進入無限循環,Apache將不得不強制終止,而用戶將看到500錯誤頁面)。更好的規則將是:

# specific rule 
RewriteRule ^a-new-page$ different.php [L,QSA] 

# broad rule (will be triggered if requested resource is not a file or directory) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]*)$ index.php?slug=$1 [L,QSA] 
  • [L]告訴Apache停止重寫,如果這個規則匹配
  • [QSA]告訴給查詢字符串附加到一個新的URL(有用的,如果你有URL參數:如跟蹤數據,頁參數等)。

有用的鏈接:http://httpd.apache.org/docs/current/rewrite/

+0

感謝那就是我的答案是後:) –