2011-06-03 89 views
3

我正在使用codeigniter創建搜索頁面。我想重寫一個GET url來與CI一起工作。重寫GET URL

http://mysite.com/en/search?search=widgets 

成爲

http://mysite.com/en/search/widgets 

我認爲我可以在routes.php文件做到這一點,但它似乎沒有後搶東西?所以現在我想在.htaccess中重寫。這是一個好主意嗎?重寫規則是什麼?

+0

在您對新解決方案感到不適應之前,請嘗試在搜索字詞中使用引號(例如)。即使您對它們進行編碼,CI也會發出致命錯誤。用'$ _GET'這個不會發生。 – 2011-06-03 18:07:09

回答

1

您應該只使用CI路由協議。無論如何,如果你想使用的.htaccess是這樣的:

RewriteEngine On 
RewriteRule ^en/search/([a-z]+) /en/search?search=$1 [L] 
0
$route['en/search/(:any)'] = "en/search/$1"; 

什麼是通常做的就是將重映射/ EN /搜索/東西帶類,搜索方法和搜索查詢任何事情都會作爲參數傳遞。

使用:通常不建議使用any,但如果您想要更具體地說明您希望允許的字符,則還可以使用自定義正則表達式。

+0

爲什麼使用(:any)不推薦?允許的字符已經被'$ config ['permitted_uri_chars']'限制 – 2011-06-03 18:10:26

0
$searchtext = $this->url->segment(2); 

應該在codeigniter中得到值「widget」。 (對不起,如果我錯了問題)。