URL模式

您正在阅读旧版文档,新版文档已迁移至 [https://document.pescms.com]

目录

基于PESCMS 2.8核心版本起,将移出URL模式功能。若需美化URL,请在对应程序的后台填写自定义路由进行美化。

PESCMS提供了3种URL模式让大家选择,下面我们以访问控制器 App/Home/GET/index来说明:

  1. 传统模式:G&M&A
    传统模式即最原始的URL地址,对于整套程序来说兼容性最好。访问的URL地址为: http://域名/index.php?g=Home&m=Index&a=index

  2. 横杠模式:G-M-A
    横杠模式属于美化URL的模式,它隐藏了gma参数名称,每一个横杠表示一个参数分隔符。前两个为GMA的缺省值。访问的URL地址为:http//域名/index.php/Home-Index-index

  3. 斜杠模式:G/M/A
    斜杠模式和横杠模式一样,主要区别在于斜杠分割符。访问的URL地址为:http://域名/index.php/Home/Index/index

在2和3模式中,若您需要带上参数,请记住该规则:在GMA后的开始,每一个分隔符前后均表示 参数 => 内容 值。如:http://域名/index.php/Home/Index/index/id/1 对应的参数为  $_GET['id'] = 1 的意思

参数陷阱

当程序URL模式使用的为非传统模式,可能遇到参数陷阱的问题。该现象主要出现在以GET形式请求的参数中,存在与PESCMS的URL分隔符一样的关键词,程序错误地对其进行参数分割。如:我们程序有一以GET形式提交的搜索功能,其具备了筛选日期的功能。其提交的日期形式为:2015-09-10

按照正常的设计,我们首先设想的URL会是:http://域名/index.php/Home/Order/list/begin/2015-01-01/end/2015-01-31 ,在控制器中打印$_GET变量,结果非设想的样子:

Array    
    (    
        [begin] => 2015    
        [end] => 2015    
        [01] => 31 # 键值名称重复,内容覆写为 31    
    )

对于此现象,我们可以将日期转行为时间戳后,再进行提交则解决了问题。GET提交时,URL显示为:http://域名/index.php/Home/Order/list/begin/2015-01-01/end/2015-01-31 。在控制器打印$_GET变量:

Array    
    (    
        [begin] => 1420041600 # 获得的为时间戳,我们只需要用strtotime函数转为正常的日期则可了。    
        [end] => 1422719999    
    )

现在和我们预想的一致了。对于参数陷阱,是一个比较难以解决的问题。毕竟程序需要参照值进行参数分割,大家在使用中要注意该现象则可。

设置URL模式

PESCMS2.5版本起,URL模式都存放于配置文件中,解除依赖数据库选项的问题。具体的修改值,请参考《配置文件》一章。

PESCMS2.5以前的版本或者某些基于PESCMS的定制软件,URL模式都可以通过程序的后台(PESCMS2.5也可以后台修改),或者数据库进行修改:

option_namenamevalue
urlModelURL格式{"index":"1","urlModel":"1","suffix":"1"}

{"index":"1","urlModel":"1","suffix":"1"} 为一个json格式,具体的修改数值,请参考《配置文件》一章。

PESCMS DOC 文档系统
© Copyright 2015-2024. by the PESCMS DOC
耗时0.0259秒