URL操作

一.URL 大小写 系统默认的规范是根据 URL 里面的模块名、控制器名来定位到具体的控制器类。比如: http://localhost/demo39/index.php/Home/User/index/id/5 PS:在 windows 平台,URL 中的大小写会自动忽略,但作为开发人员,保持大小写区分是一个良好的习惯。而 Linux 平台,如果大小写错误,会导致无法定位到指定的模块、控制器。 //URL可以不区分大小写 'URL_CASE_INSENSITIVE' =>true

PS:如果开启了不区分大小写,那么对于 UserTypeController.class.php 这样的控制器就需要如下访问方式: http://localhost/demo39/index.php/home/user_type/index/ 如果区分大小写,则是这样: http://localhost/demo39/index.php/Home/UserType/index/

二.URL 伪静态 URL 伪静态同城是为了满足更好的 SEO 效果,ThinkPHP 支持伪静态设置。 //默认情况下,伪静态后缀为.html http://localhost/demo39/User/index.html http://localhost/demo39/User/index/id/5.html //设置伪静态后缀,默认为html 'URL_HTML_SUFFIX'=>'shtml', http://localhost/demo39/User/index.shtml //如果设置为空,那么就任意后缀 'URL_HTML_SUFFIX'=>'',

//如果设置为空,可以用__EXT__常量获取当前使用的后缀 {$Think.const.__EXT__} //设置可以伪静态的后缀 'URL_HTML_SUFFIX'=>'html|shtml|xml', //禁止访问的后缀 'URL_DENY_SUFFIX' => 'html|pdf|ico|png|gif|jpg',

四.模版中的 U 我们之前使用 U()方法,都是在控制器里实现的。但实际用途中,大量的超链接是在模版中设置的,而在控制器把 U()当变量传递过去,有点过于繁杂。所以,我们可以在模版使用使用 U()方法。 //在模版中使用U()方法 {:U('User/add', array('id'=>5))}

三.URL 生成 为了配合所使用的URL模式, 我们需要能够动态的根据当前的URL设置生成对应的URL 地址。为此,ThinkPHP 内置了一个 U()方法,用于 URL 的动态生成。 定义格式:U('地址表达式',['参数'],['伪静态后缀'],['显示域名']) //默认得到当前URL echo U(); ///demo39/User/index.html 地址表达式的格式如下: [模块/控制器/操作#锚点@域名]?参数 1=值 1&参数 2=值 2... //控制器+方法 echo U('User/add'); ///demo39/index.php/User/add.html //控制器+方法+?参数1=值1 echo U('User/add?id=5'); ///demo39/index.php/User/add/id/5.html //模块+控制器+方法+?参数1=值1 echo U('Admin/User/add?id=5'); ///demo39/index.php/Admin/User/add/id/5.html U()方法第二个参数可以分离参数和值的操作,支持字符串和数组的写法。 //使用数组参数1=值1,参数2=值2 echo U('User/add',array('id'=>5,'type'=>'a')); ///demo39/index.php/User/add/id/5/type/a.html //使用字符串参数1=值1,参数2=值2 echo U('User/add','id=5&type=a'); ///demo39/index.php/User/add/id/5/type/a.html

PS:不允许使用 PATHINFO 模式的路径来编写路径,比如: echo U('User/add/id/1/type/a'); ///demo39/index.php/1/type/a.html,这个生成的 URL 是错误的

U()方法第三个参数可以指定伪静态后缀,比如: //指定伪静态后缀 echo U('User/add',array('id'=>5),'xml'); ///demo39/index.php/User/add/id/5.xml //设置'URL_MODEL'=>0,普通模式后URL生成将如下: ///demo39/index.php?m=&c=User&a=add&id=5 //设置'URL_MODEL'=>1,PATHINFO模式后URL生成将如下: ///demo39/index.php/User/add/id/5.html //设置'URL_MODEL'=>2,REWRITE模式后URL生成将如下: ///demo39/User/add/id/5.html //设置'URL_MODEL'=>3,兼容模式后URL生成将如下: ///demo39/index.php?s=/User/add/id/5.html PS:在这里我们使用 REWRITE 重写模式,它是 PATHINFO 的升级版,地址最短。 我们也可以生成路由地址,使用路由的规则生成的地址: //规则路由 'u/:id\d'=>'User/index', //生成规则路由地址 echo U('/u/5'); ///demo39/u/5.html //生成正则路由地址 '/^u_(\d+)$/'=>'User/index?id=:1', echo U('/u_5'); ///demo39/u_5.html

//域名支持 echo U('User/add@www.ycuk.com?id=5'); //http://www.ycuk.com/demo39/index.php/User/add/id/5.html //锚点支持 echo U('User/add#comment?id=5'); ///demo39/User/add/id/5.html#comment

本文分享自微信公众号 - Tech爬虫(php_pachong),作者:爬虫

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 跨模块调用

    在ThinkPHP中,使用 $this 可以调用当前模块内的方法,但是很多情况下经常会在当前模块中调用其他模块的方法。

    公众号php_pachong
  • 控制器操作【3】

    五.请求类型 ThinkPHP 提供了一组常量来判断当前请求是否是 GET、POST 等。通过判断请求处理不同的业务逻辑。 常量 含义 IS_GET 判断是否 ...

    公众号php_pachong
  • M方法与D方法有什么区别

    ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类。

    公众号php_pachong
  • 保护你的Linux系统的九个老生常谈

    在现在这个世道中,保障基于Linux的系统的安全是十分重要的。但是,你得知道怎么干。一个简单反恶意程序软件是远远不够的,你需要采取其它措施来协同工作。那么试试...

    小小科
  • 保护你的Linux系统的九个老生常谈

    在现在这个世道中,保障基于Linux的系统的安全是十分重要的。但是,你得知道怎么干。一个简单反恶意程序软件是远远不够的,你需要采取其它措施来协同工作。那么试试下...

    小小科
  • 90% 的人说 Python 程序慢,5 大神招让你的代码像赛车一样跑起来

    很多人抱怨说自己写的 Python 代码跑的慢,尤其是当处理的数据集比较大的时候,其实稍微改动几行代码就可以让你的代码性能提高好几倍,不信一起来看下面这个 5 ...

    崔庆才
  • 算法基础之桶排序(简单了解)

    天钧
  • Product change时关于change_log的讨论

    版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)

    Jerry Wang
  • JAVA 练习 找出素数

    拾点阳光
  • 排序算法的实现与比较

    Zoctopus

扫码关注云+社区

领取腾讯云代金券