前段时间,明晨网络 Mingchennet.com 对当前流行的php框架进行了测试分析,以便选出最适合当前项目的一款,最终看好ThinkPHP。“ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架”,其官方网站地址为http://www.thinkphp.cn .以下简称ThinkPHP为TP。 项目有个需求如下:1.a.com和2.a.com绑定在同一个虚拟主机上,现在要求访问 http://1.a.com和http://2.a.com显示的是不同的页面。明晨网络在项目配置文件中,使用正则来匹配相应的URL规则,并动态include相应的流程文件。 现在换到TP,TP中有个路由规则,不过好像不能对ServerName——也就是域名进行判断,同时其路由规则必须按照指定的格式编写,还要制定action,module的名称,感觉不太灵活。但是被TP其他功能的强大灵活吸引,实在舍不得丢开这个框架。 好在,TP有所谓的空模块和空操作,也就是说当前URI没有匹配的模块则转交空模块处理,没有匹配的操作则转交空操作处理。所以我们在项目的Lib\Action目录下,删除默认首页IndexAction.class.php,建立文件EmptyAction.class.php,其内容如下
该段代码中加载了一个项目配置目录中的一个配置文件app_config.php,其内容如下
系统接收请求后,加载app_config.php文件,这个文件指定了路由规则,上面代码的规则含义就是当请求的url以www.开头,并且没有多余路径,比如www.a.com,则转交www操作的index模块处理。当然了,我们还要为操作和模块编写相应的代码,在Lib\Action下面新建文件WwwAction.class.php,内容如下
现在将www.a.com的a记录解析到127.0.0.1,在浏览器访问www.a.com将看到“www site”,但是直接访问127.0.0.1则没有输出。至此,我们可以随意在TP中构建自己的路由规则了。 如果你的虚拟主机是支持自定义.htaccess文件apache,或者是支持自定义404.php的IIS,都可以使用这种方法来构建URL。随意定义URL的主要好处大概就是,在支持多域名绑定而不支持子目录的虚拟主机绑定N个站点以及SEO优化。 (责任编辑:admin) |