新版的speedphp 伪静态问题

#1 xiaoziwuzui

@jake 伪静态规则怎么设置呀?
/article/show/8.html
这种要怎么转到  ?c=article&a=show&id=8
在规则那里 '//.html' => '//id=',
这样写好像没有用?

2015-09-30 11:12:54

#2 jake

/article/show/8.html

配置是

'/article/show/.html' => 'article/show'

id获取是$_GET["id"]

2015-09-30 11:33:18

#3 xiaoziwuzui

jake 发表于 2015-9-30 11:33
/article/show/8.html

配置是
得跪在地上唱一首征服,我今天又试了很久,原来是这样实现的.谢谢jake大大, 我最近在用新版的speed做一个图片分享类的网站,到时候有问题再麻烦帮助一下.

2016-03-01 16:02:55

#4 xiaoziwuzui

大地震了,
刚刚照着jake这样试了一下.确实单个可以.但是会有另外的问题. 先举个粟子.
这是规则.上个简单的.
'rewrite' => array(
     'user/view/.html'          => 'user/view',
     '/.html'          => '/',
);
echo url('user','view',array('id'=>1));
这是一个需求,但是我这个user/view方法.特么还有一种情况是不需要带ID的.就是查看自身的资料.
echo url('user','view');
这个时候就挂掉了.会输出这样.
http://test.web.con/user/view/1.html
http://test.web.con/user/view/.html
然后我改动了一下规则.
'rewrite' => array(
'/.html'        => '/',
                        '/
/.html'          => '/',
);
并且把url函数改动了一下.
          //break;
      }
}
return isset($urlArray[$url]) ? $urlArray[$url] : $url;
把这个break注释掉就能达到我的目标.就是能支持 带参数和不带参数两种.
但是我记得jake有一次更新记录是说 "修复rewrite规则会一直匹配到结束的bug,修正为只匹配首次。"
我这样子改动,会不会对性能有影响,或者有别的影响.
有没有啥别的好方法,既支持带参数的规则.又不会覆盖掉不带参数的规则.
不然就得只能对每一个类型的URL写一串规则.






2016-03-01 16:19:40

#5 jake

xiaoziwuzui 发表于 2016-3-1 16:19
大地震了,
刚刚照着jake这样试了一下.确实单个可以.但是会有另外的问题. 先举个粟子.
这是规则.上个简单的. ...
按你的说法,不就是:

'rewrite' => array(
        'user/view/.html'   => 'user/view',
        'user/view.html'   => 'user/view',
        '/.html'          => '/',
);


上面的就是不带id的,第二条是带ID的。因为肯定不可能有
http://localhost/user/view/.html这样的URL的。

2016-03-02 08:38:12

#6 xiaoziwuzui

jake 发表于 2016-3-2 08:38
按你的说法,不就是:

'rewrite' => array(
这样配置确实 是可以实现想要的效果. 但是针对同类型的URL,好像要设置很多路由规则才行. . 再加上URL函数里面处理的流程其实也是蛮多的.会不会有性能问题? 能不能实现一个通用的路由规则.可以减化这些处理..
另外.jake.我用这个开发不收我版权费吧.

2016-03-02 13:08:38

#7 xiaoziwuzui

jake 发表于 2016-3-2 08:38
按你的说法,不就是:

'rewrite' => array(
这样配置确实 是可以实现想要的效果. 但是针对同类型的URL,好像要设置很多路由规则才行. . 再加上URL函数里面处理的流程其实也是蛮多的.会不会有性能问题? 能不能实现一个通用的路由规则.可以减化这些处理..
另外.jake.我用这个开发不收我版权费吧.

2016-03-02 13:09:07

#8 xiaoziwuzui

jake 发表于 2016-3-2 08:38
按你的说法,不就是:

'rewrite' => array(
这样配置确实 是可以实现想要的效果. 但是针对同类型的URL,好像要设置很多路由规则才行. . 再加上URL函数里面处理的流程其实也是蛮多的.会不会有性能问题? 能不能实现一个通用的路由规则.可以减化这些处理..
另外.jake.我用这个开发不收我版权费吧.

2016-03-02 13:10:39

#9 xiaoziwuzui

我去. 今天服务器这么卡.我以为我发送没成功. 结果发了这么多条. 而且这表情输入已经挂掉了.点了没反应

2016-03-02 13:14:07

#10 jake

xiaoziwuzui 发表于 2016-3-2 13:09
这样配置确实 是可以实现想要的效果. 但是针对同类型的URL,好像要设置很多路由规则才行. . 再加上URL函数 ...
1. 相对来说,新版speed框架的路由实现,是最简洁而且高效的,几乎任何的规则都能做到。
2. 通用规则就是最后一条 '/.html'  => '/',

2. 开源东东不收钱


2016-03-02 13:38:12

#11 xiaoziwuzui

jake 发表于 2016-3-2 13:38
1. 相对来说,新版speed框架的路由实现,是最简洁而且高效的,几乎任何的规则都能做到。
2. 通用规则就是 ...
昨天晚上发现一个新BUG.
如果我的方法名称是  cash_view,cash_edit这类的名字.
就会出BUG,方法名不能带_. 不知道这算不算一个BUG.


2016-03-03 10:10:16

#12 jake

xiaoziwuzui 发表于 2016-3-3 10:10
昨天晚上发现一个新BUG.
如果我的方法名称是  cash_view,cash_edit这类的名字.
就会出BUG,方法名不能带_. ...
方法名是建议驼峰命名,而且要以action开头,如actionIndex这样的方式。

没有action开头的,是不能通过URL访问的方法,仅供controller自身调用。
也就是可以带下划线,但是如果没有action开头,就不能通过URL访问而已

另外,把错误提示,也就是你所谓的bug的情况说明一下,这样看更容易判断你的问题所在。


2016-03-03 11:37:43

#13 xiaoziwuzui

jake 发表于 2016-3-3 11:37
方法名是建议驼峰命名,而且要以action开头,如actionIndex这样的方式。

没有action开头的,是不能通过UR ...
我自己改动了action名字.  在后面加了一个 _ 我推荐官方也可以改下. 这样方便阅读和查看.
情景大概是这样.
<{url c="user" a="fans_edit"}>

这是生成一个url,生成到 http://xxxx/user/fans_edit.html   这样一个.
访问之后得到.
Err: Method 'action_fans_edit' of 'user' is not exists!
本意是 fans_edit是一个方法. 但是这样被路由挡住了. 应该是被解析到了  user模块 的   fasn类的 edit方法.
但是我的路由规则没有写 user/_这种类似的. 只有一个  后台的管理.   manage/_.html

2016-03-03 22:24:16

#14 xiaoziwuzui

xiaoziwuzui 发表于 2016-3-3 22:24
我自己改动了action名字.  在后面加了一个 _ 我推荐官方也可以改下. 这样方便阅读和查看.
情景大概是这样 ...
醉了. . 不是这样子的情景 . 是在后台发生的..我去.
另外描述一下.
是后台 路由  manage/_.html=>manage/c/a
然后 url c=manage/user a=fans_edit  得到 manage/user_fans_edit.html
访问之后错误信息为.
Err: Controller 'finance_cash' is not exists!
这样才是我昨天遇到的问题.

2016-03-03 22:27:15

#15 jake

哪来的finance_cash,跟你规则什么的都不搭,稍微检查一下代码看看哦

另外,方法名驼峰写法是PHP官方建议的,下划线一般用在函数名。

我这里只是跟随PHP的官方建议,给大家更规范的PHP写法。

2016-03-04 08:47:10