2013-07-09 28 views
0

第一個GET參數應該有一個?。當我嘗試這個網址我不能夠$_GET['type']mod改寫問號和&符號

http://localhost/category/general?type=pages&v=1 

只用&的作品,當我使用$_GET['type']我得到pages

http://localhost/category/general&type=pages&v=1 

這裏是我的國防部重寫..

RewriteRule ^category/([A-Za-z0-9-]+)(\?type=[A-Za-z0-9-]+)?([^.]+)?/?$ /category.php?c=$1&type=$2&query=$3 [L] 

我該如何解決這個問題,所以這個網址http://localhost/category/general?type=pages&v=1允許我用$_GET['type']pages作爲結果?

+0

您的第二個URL不正確。 '&'只在** a'?'之後開始工作。該網址應該是'http:// localhost/category/general?type = pages&v = 1' –

+0

這正是我所說的..我不能'$ _GET ['type']'與該網址。 – user892134

+0

不知道爲什麼你要使用重寫,除了去除'.php'部分外,URL中的所有其他內容都可以通過添加'QSA'指令來處理。 –

回答

0

我認爲這裏的問題是,在你的RewriteRule你試圖匹配查詢字符串的一部分,這是不可能的。

如果我正確理解您的問題,您希望請求http://example.com/category/general?type=pages&v=1被服務器解釋爲http://example.com/category.php?c=general&type=pages&query=1

要匹配查詢字符串,您需要在條件前加上規則前綴。下面應該工作:

RewriteCond %{QUERY_STRING} type=([^&]+) 
RewriteCond %{QUERY_STRING} v=([^&]+) 
RewriteRule ^category/([^/]+) /category.php?c=$1&type=%1&query=%2 

前兩行的先決條件是指出請求的URL需要有兩個type=v=作爲查詢字符串的一部分。最後一行重寫請求。這意味着只有符合以下條件的URL纔會被重寫:category/SOMETHING?type=SOMETHING&v=SOMETHING

0

與此一替換現有的重寫規則:

RewriteRule ^category/([A-Za-z0-9-]+)(&.+)$ /category.php?c=$1$2 [L,NC] 

這將使所有可用$_GET變量來category.php

例如對於您的URI:http://localhost/category/general&type=pages&v=1此解決方案將提供以下查詢字符串:

$_SERVER["QUERY_STRING"] = 'c=general&type=pages&v=1'