请问,路由出现如下问题

#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

#5 玄瞳

没有返回。。。
url在这里:http://www.zplaying.com/index.php?c=zshow&a=explorer&tag=%E6%83%B3%E7%8E%A9&uname=%E7%8C%A9%E7%8C%A9  这是正常状态

2012-12-12 10:19:00

#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

#8 玄瞳

hi,还是不对,我现在的这个链接:http://www.zplaying.com/zshow/me/uname/%E7%8C%A9%E7%8C%A9   路由也失败了。

2012-12-12 17:35:04

#9 玄瞳

请问speedphp的路由,是如何工作的?他如何区分一个值是参数还是action呢?
我好像没有找到类似的帮助

2012-12-12 18:02:17

#10 jake

路由的伪静态 http://www.speedphp.com/thread-3732-1-1.html

action和参数都是可以设置的。

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