2013-04-14 15 views
0

試圖寫一個重寫規則來捕獲兩個GET變量重寫.htaccess 2 GET變量不能拆分?

http://stackoverflow.com/blogs/category/general/1 

RewriteRule ^blogs/category/(.+)/?$ blogs.php?category=$1 [PT,L,QSA] 
RewriteRule ^blogs/category/(.+)/([0-9]+)/?$ blogs.php?category=$1&page=$2 [PT,L,QSA] 

然而,當我抓住這些從頭部它看起來像這樣?

$_GET['category'] = "general/1"; 
$_GET['page'] = ""; 

正如你可以看到我有兩個規則,一個只是當他們提供類別和一個當他們還提供了頁碼。我不確定這種做法可能是錯誤的。

我在這裏做錯了什麼?我怎樣才能正確地使用重寫規則(我知道我可以在PHP本事但這是醜陋的)

回答

1

我想你只需要切換它們,以便更具體的一個第一處理分開這些變量:

RewriteRule ^blogs/category/(.+)/([0-9]+)/?$ blogs.php?category=$1&page=$2 [PT,L,QSA] 
RewriteRule ^blogs/category/(.+)/?$ blogs.php?category=$1 [PT,L,QSA] 

要進一步解釋:如果沒有另外指定,所有正則表達式都是貪婪的。這意味着,正則表達式試圖儘可能地獲得。 (。+)匹配「general/1」。

+0

太棒了,效果很好。我懂了!貪婪的男孩需要吃更多的變量! TY –