订阅本站

ThinkPHP开发技巧之利用路由实现分组别名

huangdijia 发表于 2011-11-18 分类 PHP/PHP框架, 收藏夹 | 发表评论

每一个创新背后都有一个蛋疼的需求。
好吧,先说说我们的需求,再详细解说实现方法。假设你用ThinkPHP开发的某站点后台地址为http://www.example.com/Admin,突然有一天你老大跟你说这个路径有被扫描的风险,要你把后台路径改为http://www.example.com/MyAdmin。
这个需求影响的地方包括:

  1. Action文件名及类名
  2. Tpl模板对应目录
  3. 其他

有没有更简单的方法?在不改Action和Tpl的情况下如何实现呢?这个时候应该有人马上想到了ThinkPHP的路由。

array('/^MyMdmin(?:\/?(\w+)?\/?(\w+)?)/i', 'Empty/_empty', 'm,a', 'g=Admin'),

这个时候访问:

http://www.example.com/MyAdmin/News/add

实际访问到的是:

http://www.example.com/Admin/News/add

这个时候有人会问,如果我想只让别名能访问,而原来的路径失效,可以吗?应该怎么办?
答案是可以,在路由配置里增加多一条:

array('/^Admin/i', 'Empty/_empty'),

相当于把Admin开头的访问全部重定向了空模块和空操作。

下课了,同学们再见!

[使用Ctrl+回车快速提交]