用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4716|回复: 11
收起左侧

[URL] CI框架重写路由后如何获取get参数???

[复制链接]
发表于 2017-5-27 15:01:17 | 显示全部楼层 |阅读模式
想要把http://waimao.test.com/web/home/product_detail?p_id=64这个url重写成http://waimao.test.com/goods/64这个样子,  
在application/config/routes.php下添加了如下规则:
$route['goods/(:any)'] = '/web/home/product_detail/?pid=$1';
控制器可以正常跳转, 但是$_GET获取不到值, 请问是哪里出问题了呢???
 楼主| 发表于 2017-5-27 16:07:04 | 显示全部楼层
Hex 发表于 2017-5-27 15:33
如果是 apache 的话,可以改这个。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|static|min|alipay|weixinpay|pingpp|upload|images|Batch_trans_notify-PHP-UTF-8|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

这是我照着网上的攻略改的, 只是实现了把index.php隐藏掉的功能, 如果要实现我想改的那种效果要怎么写呢???
 楼主| 发表于 2017-5-27 16:08:09 | 显示全部楼层
Hex 发表于 2017-5-27 15:34
你自己修改了路由类?

$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['welcome/lists_(:num)_(:num)'] = 'welcome/lists/$1/$2';
$route['goods/(:any)'] = '/web/home/product_detail/?pid=$1';

这个是我application/config/routes.php的配置, 是哪里出问题了嘛???
发表于 2017-5-27 17:39:42 | 显示全部楼层
张奇怪 发表于 2017-5-27 16:08
$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashe ...

如果你的路由能正确访问,这里就是正确的,但是确实可能会影响参数,具体你可以 var_dump($_SERVER) 里,看看里面都有什么内容,应该能拿得到你要的数据,不过可能要你自己手动解析一下。
发表于 2017-5-27 15:12:55 | 显示全部楼层
看看 $_SERVER['QUERY_STRING'] 是不是有。不过,原则上这种重写要用 URL Rewrite 来做,不适合用路由。
 楼主| 发表于 2017-5-27 15:23:36 | 显示全部楼层
Hex 发表于 2017-5-27 15:12
看看 $_SERVER['QUERY_STRING'] 是不是有。不过,原则上这种重写要用 URL Rewrite 来做,不适合用路由。 ...

在改写了的路由下面没有这个的, 是哪里出问题了么???
 楼主| 发表于 2017-5-27 15:24:59 | 显示全部楼层
Hex 发表于 2017-5-27 15:12
看看 $_SERVER['QUERY_STRING'] 是不是有。不过,原则上这种重写要用 URL Rewrite 来做,不适合用路由。 ...

URL Rewrite的话要怎么弄啊? 修改 .htaccess么???
发表于 2017-5-27 15:33:22 | 显示全部楼层
张奇怪 发表于 2017-5-27 15:24
URL Rewrite的话要怎么弄啊? 修改 .htaccess么???

如果是 apache 的话,可以改这个。
发表于 2017-5-27 15:34:03 | 显示全部楼层
张奇怪 发表于 2017-5-27 15:23
在改写了的路由下面没有这个的, 是哪里出问题了么???

你自己修改了路由类?
发表于 2017-5-27 17:37:10 | 显示全部楼层
张奇怪 发表于 2017-5-27 16:07
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

具体怎么写建议参考一下 apache url rewrite  手册。

本版积分规则