您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
thinkphp3.2.1学习笔记-URL操作
发布时间:2017-09-19 11:36:21编辑:雪饮阅读()
url地址中模块名、控制器名、操作名等不区分大小写:
'URL_CASE_INSENSITIVE'=>true,
在Windows中本来就是不区分大小写,但linux中要在配置文件中添加如上配置才可以。
URL伪静态:
thinkphp3.2.1默认伪静态后缀是.html,如下两种访问效果完全相同:
http://localhost/home/user/index.html
http://localhost/home/user/index
URL伪静态后缀配置:
'URL_HTML_SUFFIX'=>'shtml',
配置后如下两种访问效果完全相同:
http://localhost/home/user/index.shtml
http://localhost/home/user/index
URL伪静态后缀配置为任意后缀:
'URL_HTML_SUFFIX'=>'',
模板中获取当前使用的伪静态后缀:
<{$Think.const.__EXT__}>
这个获取的不是配置文件中的后缀,而是用户访问时的实时后缀
URL伪静态配置为多个被允许的后缀:
'URL_HTML_SUFFIX'=>'html|shtml|xml',
URL伪静态配置被禁止访问的后缀:
'URL_DENY_SUFFIX'=>'html|pdf|ico|png|gif|jpg',
这些后缀被禁止后仍然可以访问,只是访问页面呈现为空
U方法:
U方法用于生成url路径。
当没有任何参数时则生成当前url路径
控制器中:echo U();
生成的路径可能不包含模块名。
需要在配置文件中将MODULE_ALLOW_LIST和DEFAULT_MODULE项注释掉才行。
控制器+方法:
echo U('Member/add');
控制器+方法+参数:
echo U('Member/add?id=5');
echo U('Member/add',array('id'=>5));
控制器+方法+多参数:
echo U('Member/add',array('id'=>5,'type'=>'a'));
echo U('Member/add','id=5&type=a');
控制器+方法+参数+指定伪静态后缀:
echo U('Member/add',array('id'=>5,'type'=>'a'),'xml');
不同url模式下U方法生成的url有所不同,配置文件中可以修改url模式:
普通模式配置如:
'URL_MODEL'=>0,
生成效果如:
/index.php?m=&c=Member&a=add&id=5&type=a
默认的pathinfo模式配置如:
'URL_MODEL'=>1,
生成效果如:
/index.php/Member/add/id/5/type/a.xml
重写模式配置如:
'URL_MODEL'=>2,
重写模式是pathinfo模式的升级版,地址最短,将入口index.php都可以忽略掉
生成效果如:
/Member/add/id/5/type/a.xml
兼容模式配置如:
'URL_MODEL'=>3,
生成效果如:
/index.php?s=/Member/add/id/5/type/a.xml
使用规则路由生成url:
配置文件中开启路由功能
配置文件中URL_ROUTE_RULES的配置项如:
'm/:id\d'=>'Member/add',
控制器中U方法调用如:
echo U('/m/5');
生成效果如:
/m/5.html
使用正则路由生成url:
配置文件中URL_ROUTE_RULES的配置项如:
'/^m_(\d+)$/'=>'Member/add?id=:1',
控制器中调用如:
echo U('/m_5');
生成效果如:
/m_5.html
支持生成带域名的url:
直接在控制器中就可以生成,在方法名后面用@添加上域名:
$domain=$_SERVER["SERVER_NAME"];
echo U('Member/add@'.$domain.'?id=5');
生成效果如:
http://localhost/Member/add/id/5.html
支持生成带锚点的url:
同样可以直接在控制器中生成:
echo U('Member/add#comment?id=5');
生成效果如:
/Member/add/id/5.html#comment
模板中也可直接生成:
<{:U('Member/add',array('id'=>5))}>
关键字词:thinkphp3.2.1,url