张奇怪 发表于 2017-5-27 15:01:17

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

想要把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

这是我照着网上的攻略改的, 只是实现了把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的配置, 是哪里出问题了嘛???

Hex 发表于 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) 里,看看里面都有什么内容,应该能拿得到你要的数据,不过可能要你自己手动解析一下。

Hex 发表于 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么???

Hex 发表于 2017-5-27 15:33:22

张奇怪 发表于 2017-5-27 15:24
URL Rewrite的话要怎么弄啊? 修改 .htaccess么???

如果是 apache 的话,可以改这个。

Hex 发表于 2017-5-27 15:34:03

张奇怪 发表于 2017-5-27 15:23
在改写了的路由下面没有这个的, 是哪里出问题了么???

你自己修改了路由类?

Hex 发表于 2017-5-27 17:37:10

张奇怪 发表于 2017-5-27 16:07
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


具体怎么写建议参考一下 apache url rewrite手册。
页: [1] 2
查看完整版本: CI框架重写路由后如何获取get参数???