TP提供了非常灵活的URL方式, 前面写过 U方法生成伪静态
与 空操作实现伪静态
本文介绍下 利用伪静态实现网站语言伪装:
TP里面有一个URL伪静态的功能,本来是用于把URL伪装成一个静态页面地址用于SEO优化,例如设置:
'URL_HTML_SUFFIX'=>'.html'
就可以实现
http://serverName/News.html
这样的URL,实际上就是和
具有同样的作用。
稍微改进下,其实这个功能还可以起到表面上伪装网站技术的作用,呵呵~
例如,想忽悠客户你什么语言都能开发,遇到需要.Net的客户我们改成
'URL_HTML_SUFFIX'=>'.aspx'
就可以把
伪装成
http://serverName/News.aspx
遇到要求Java的客户,我们可以改成
或者
'URL_HTML_SUFFIX'=>'.jsp'
当然,我们不能靠这个忽悠客户, 但是 是不是很好玩儿。 ^_^
ThinkPHP 提供了非常灵活的URL模式,可以自己定制URL,支持URL路由,非常方便.
再次介绍下利用U函数生成URL伪静态的功能。
首先, 在配置文件(config.php)里设置 URL_HTML_SUFFIX 设置静态后缀
例
1
2
3
4
5
6
7
| <?php
return array(
'URL_HTML_SUFFIX'=>'.shtml', //随意, 可设置其它的。
...
//其它配置信息
);
?> |
来砍下手册U方法的定义规则:
U方法的定义规则如下(方括号内参数根据实际应用决定):
U('[项目://][路由@][分组名-模块/]操作? 参数1=值1[&参数N=值N]')
或者用数组的方式传入参数
U('[项目://][路由@][分组名-模块/]操作',array('参数1'=>'值1' [,'参数N'=>'值N']))
如果不定义项目和模块的话 就表示当前项目和模块名称,下面是一些简单的例子:
U('Myapp://User/add') // 生成Myapp项目的User模块的add操作的URL地址
U('Blog/read?id=1') // 生成Blog模块的read操作 并且id为1的URL地址
U('Admin-User/select') // 生成Admin分组的User模块的select操作的URL地址
参数请确保使用 ?id=1&name=tp或者数组的方式来定义,虽然有些情况下
U('Blog/read/id/1')和U('Blog/read?id=1')的效果一样
但是在不同的URL设置情况下,会导致解析的错误。
根据项目的不同URL设置,同样的U方法调用可以智能地对应产生不同的URL地址效果,例如针对
U('Blog/read?id=1')这个定义为例。
如果当前URL设置为普通模式的话,最后生成的URL地址是:
http://<serverName>/index.php?m=Blog&a=read&id=1
如果当前URL设置为PATHINFO模式的话,同样的方法最后生成的URL地址是:
http://<serverName>/index.php/Blog/read/id/1
如果当前URL设置为REWRITE模式的话,同样的方法最后生成的URL地址是:
http://<serverName>/Blog/read/id/1
如果当前URL设置为REWRITE模式,并且设置了伪静态后缀为.html的话,同样的方法最后生成的URL地址是:
http://<serverName>/Blog/read/id/1.html
U方法还可以支持路由,如果我们定义了一个名称为View的路由,指向Blog模块的read操作
参数是id,那么U('View@?id=1')生成的URL地址是:
http://<serverName>/index.php/View/id/1
好,我们只需在模板文件里 用U函数 生成的链接 就直接加上设置的后缀了。
例:
tpl/default/news/ 下的index.html文件
1
| <a href="{:U("News/edit/id/$vo[id]")}">阅读</a> |
是不是很强大! ^_^
Recent Comments