请问,路由出现如下问题
发布于:2022-01-17 09:50:54
#1 玄瞳
如果不用路由模式:/index.php?c=zshow&a=explorer&page=1&uname=aaaaaa&tag=在玩 正常。
开启路由模式是:/zshow/explorer/page/1/uname/aaaaaa/tag=在玩 开启之后,页面是空白,也没有任何报错,请问问题可能在哪儿?
2012-12-11 23:36:16
#2 jake
用不同的浏览器看看是否404,有些浏览器会把404屏蔽的。
另外,把模式设置成debug,release模式错误显示不出来。
2012-12-12 09:04:47
#3 玄瞳
我的确是debug模式。。。其他报错是可以显示的。所以我很困惑
2012-12-12 10:08:27
#4 jake
浏览器 =》 查看源代码
2012-12-12 10:10:06
#6 玄瞳
ps,这个网站是用speedphp的。。。好像又一个版块是放这种网站的吧?申请入住。
感谢speedphp
2012-12-12 10:21:49
#7 jake
http://www.zplaying.com/zshow/explorer/page/1/ 这样是OK的,我猜测是不是这个action在处理page的时候,没有默认值?
感谢支持。
2012-12-12 10:26:00
#9 玄瞳
请问speedphp的路由,是如何工作的?他如何区分一个值是参数还是action呢?
我好像没有找到类似的帮助
2012-12-12 18:02:17
#10 jake
路由的伪静态
http://www.speedphp.com/thread-3732-1-1.htmlaction和参数都是可以设置的。
2012-12-12 19:03:07
#11 玄瞳
我找到问题了。
在路由模式下,是因为用spArg获取的参数,需要对url进行转码,在非路由模式下,可以自动识别并转码。
所以这个可能是一个bug,请jake查一下看看。
2012-12-17 16:29:42
#12 jake
玄瞳 发表于 2012-12-17 16:29
我找到问题了。
在路由模式下,是因为用spArg获取的参数,需要对url进行转码,在非路由模式下,可以自动识 ...
无论有没有rewrite,通过浏览器地址栏传递的中文参数,也就是GET参数,都是会被urlencode。
GET参数要urldecode,这是常识。框架只会负责接收参数,不知道具体形态,所以不会自动decode的。
你那程序主要是没对GET到的参数进行判断直接使用,所以会出现崩溃情况。
2012-12-17 18:56:24
#13 玄瞳
jake 发表于 2012-12-17 18:56
无论有没有rewrite,通过浏览器地址栏传递的中文参数,也就是GET参数,都是会被urlencode。
GET参数要url ...
我的参数都是通过框架的spArg获取,没有自行去用$_GET.
在非路由模式:uname=玄瞳 下,spArg接收之后,参数自动被:urldecode
在路由模式下:uname/玄瞳 下,spArg接收之后,仍然是
urlencode
2012-12-18 10:04:12
#14 jake
玄瞳 发表于 2012-12-18 10:04
我的参数都是通过框架的spArg获取,没有自行去用$_GET.
在非路由模式:uname=玄瞳 下,spArg接收之后, ...
都urldecode就行,一般而言地址栏被urlencode的情况,和浏览器也有关系的,IE就会encode,chrome等不会。
所以保险的做法就是GET参数,反正地址栏传递的(包括rewrite)都decode一次。
PS:spArgs就是等于GET,GET的自动decode是浏览器自动完成的
2012-12-18 10:25:35