2014-01-09 40 views
0

字符串或沒有我做一個單一的正則表達式以下URL匹配到相應的文件正則表達式匹配的mod_rewrite

/main/type1/dog/type2/food    index.php?t1=dog&t2=food 
/main/type1/dog/type2/food/    index.php?t1=dog&t2=food 
/main/type1/dog/type2/food/menu/puppy  index.php?t1=dog&t2=food&menu=puppy 
/main/type1/cat/type2/toy/menu/adult  index.php?t1=cat&t2=toy&menu=adult 


RewriteRule ^/?main/type1/([a-z]+)/type2/([a-z]+)/?(|(menu)/([a-z]+))$ index.php?t1=$1&t2=$2&$menu=$3 [L] 

但正如我希望這是行不通的。任何線索專家來解決它?謝謝!

回答

0

您可以使用以下正則表達式:

^/?main/type1/([a-z]+)/type2/([a-z]+)(/|(/menu/([a-z]+)/?))?$ 
0

嘗試:

RewriteRule ^/?main/type1/([a-z]+)/type2/([a-z]+)(?:/(menu)/([a-z]+)|)/?$ index.php?t1=$1&t2=$2&$3=$4 [L] 

這樣一來,如果menu部分不存在,該參數將不會傳遞到你的索引。 PHP腳本。

+0

感謝您的伎倆(?:東西| anther_thing) – user2818066

0

除非你是罰款&=在查詢字符串的結尾最好是有2個獨立的規則是這樣的:

# for URL with 2 query parameters 
RewriteRule ^/?main/[^/]+/([^/]+)/[^/]+/([^/]+)/?$ index.php?t1=$1&t2=$1 [NC,L,QSA] 

# for URL with 3 query parameters 
RewriteRule ^/?main/[^/]+/([^/]+)/[^/]+/([^/]+)/([^/]+)/([^/]+)/?$ index.php?t1=$1&t2=$1&$3=$4 [NC,L,QSA]