2011-06-03 162 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”。 (对不起,如果我错了问题)。