2010-08-18 100 views
1

什麼是以下兩條規則結合成一體,使用戶可以訪問domain.com/schedule也domain.com/schedule/{day}有條件的.htaccess規則

的最好方法規則應該轉發到相同的控制器,在那裏我會再檢查參數

RewriteRule ^schedule/?$ index.php?_orn_shows_action=view-schedule [NC,QSA,L] 
RewriteRule ^schedule/([a-zA-Z0-9-]+)/?$ index.php?_orn_shows_action=view-schedule&day=$1 [NC,QSA,L] 

回答

0

也許你沒有把它結合到一個 - 嘗試切換自己的立場,第二個第一和第一之後,讓你的第一條規則不會捕獲應該由第二條規則分析的請求。

2

如果你不關心你是否得到day參數沒有值,你可以這樣做:

RewriteRule ^schedule(/(([a-zA-Z0-9-]+)/?)?)?$ index.php?_orn_shows_action=view-schedule&day=$3 [NC,QSA,L] 

這將捕捉到這些變化:

/schedule 
/schedule/ 
/schedule/day 
/schedule/day/ 

如果您要確保不要獲得空的day參數,請執行以下操作:

RewriteCond $3  ="" [OR] 
RewriteCond &day=$3 ^(.*)$ 
RewriteRule ^schedule(/(([a-zA-Z0-9-]+)/?)?)?$ index.php?_orn_shows_action=view-schedule&day=$3 [NC,QSA,L] 

最後,如果您不希望從這些URL上的瀏覽器獲取查詢字符串,我會放棄QSA標記,因爲有人前往/schedule/monday?day=1最終會將day設置爲1,而不是「星期一」。有辦法阻止這種情況發生,但如果你不需要查詢字符串,只需要忽略它就容易了。

+0

這很好,謝謝你;-) – 2010-08-24 15:10:07