专业网站建设品牌,18年专业建站经验,服务6000+客户--广州松河
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
广州松河
>
技术支持
> CodeIgniter配置之URL
CodeIgniter配置之URL
来源:网络整理 时间:2023/2/14 0:06:49 共
3678
浏览
配置文件中有几个有关URL的配置,影响到路由、参数的获取和URL的创建,它们是:
PHP
复制代码
$config
[
'base_url'
]
=
''
;
$config
[
'index_page'
]
=
'index.php'
;
$config
[
'uri_protocol'
]
=
'AUTO'
;
$config
[
'url_suffix'
]
=
''
;
$config
[
'allow_get_array'
]
=
TRUE
;
$config
[
'enable_query_strings'
]
=
FALSE
;
$config
[
'controller_trigger'
]
=
'c'
;
$config
[
'function_trigger'
]
=
'm'
;
$config
[
'directory_trigger'
]
=
'd'
;
复制代码
$config['uri_protocol']
uri_protocol可选项有AUTO、PATH_INFO、QUERY_STRING、REQUEST_URI、ORIG_PATH_INFO
含义分别如下:
QUERY_STRING:
查询字符串;
PATH_INFO:
客户端提供的路径信息,即在实际执行脚本后面尾随的内容,会去掉Query String;
REQUEST_URI:
包含HTTP协议中定义的URI内容。
访问:http://pc.local/index.php/product/pc/summary?a=1时
PATH_INFO为/product/pc/summary;REQUEST_URI为/index.php/product/pc/summary?a=1;QUERY_STRING为a=1
实际的配置跟服务器配置也会有点关系,有的服务器会配置ORIG_PATH_INFO,大部分没有。
uri_protocol的值决定了CI路由和参数的获取方式,CI会通过这些值来判断解析到哪一个控制器,所以需要确保服务器配置了正确的值。大部分情况下设置AUTO即可,AUTO会依次检测REQUEST_URI PATH_INFO QUERY_STRING $_GET的值,直到读到内容。
影响路由解析还有enable_query_strings参数,当该参数为TRUE时, 并且传入了controller_trigger参数,则会以查询字符串的方式来获取参数,如index.php?c=products&m=view&id=345则解析到product控制器中的view方法。
$config['allow_get_array']
CI中封装了$this->input->get()方法来获取get参数,这里设置为true则表示也允许通过$_GET方式来获取参数,否则会清空$_GET中的值。
$config['base_url']
该参数的设置会影响到base_url() site_url()函数创建的URL,为空时程序会自动获取当前地址,否则会根据设置的地址进行创建URL。
$config['index_page']
默认主页,使用site_url()创建时会带上该参数,若需要去掉index.php设置为空即可。
$config['url_suffix']
后缀名, 使用site_url()创建时也会带上该参数。
以上两个参数的设置对base_url()无效,即不会追加 index_page 和 url_suffix的值。
PHP
复制代码
//pc.local/bootstrap/js/bootstrap.min.js
echo
base_url
(
'bootstrap/js/bootstrap.min.js'
)
;
//pc.local/login.htm(设置了index_page='' url_suffix='.htm')
echo
site_url
(
'login'
)
;
复制代码
所以可以发现,base_url() 用来创建静态资源的地址,如JS、CSS等地址需要用该函数来生成。site_url() 用来创建跟控制器地址相关的URL。
使用base_url()和site_url()函数创建的URL地址具有更好的移植性,建议系统URL相关的地址统一使用该函数创建。
CI提供的site_url对于参数的处理还不够灵活,可以自己扩展一个create_url函数用来创建跟控制器相关的地址。下面为一种实现方式。
扩展url_helper,在helpers中创建MY_url_helper.php,内容如下:
PHP
复制代码
function
create_url
(
$route
=
NULL
,
$params
=
array
(
)
,
$ampersand
=
'&'
)
{
$route
=
site_url
(
$route
)
;
if
(
!
empty
(
$params
)
)
{
return
$route
.
'?'
.
http_build_str
(
$params
,
NULL
,
$ampersand
)
;
}
return
$route
;
}
if
(
!
function_exists
(
'http_build_str'
)
)
{
function
http_build_str
(
$query
,
$prefix
=
''
,
$arg_separator
=
''
)
{
if
(
!
is_array
(
$query
)
)
{
return
null
;
}
if
(
$arg_separator
==
''
)
{
$arg_separator
=
ini_get
(
'arg_separator.output'
)
;
}
$args
=
array
(
)
;
foreach
(
$query
as
$key
=>
$val
)
{
$name
=
$prefix
.
$key
;
if
(
!
is_numeric
(
$name
)
)
{
if
(
is_array
(
$val
)
)
{
http_build_str_inner
(
$val
,
$name
,
$arg_separator
,
$args
)
;
}
else
{
$args
[
]
=
rawurlencode
(
$name
)
.
'='
.
urlencode
(
$val
)
;
}
}
}
return
implode
(
$arg_separator
,
$args
)
;
}
}
if
(
!
function_exists
(
'http_build_str_inner'
)
)
{
function
http_build_str_inner
(
$query
,
$prefix
,
$arg_separator
,
&
$args
)
{
if
(
!
is_array
(
$query
)
)
{
return
null
;
}
foreach
(
$query
as
$key
=>
$val
)
{
$name
=
$prefix
.
"["
.
$key
.
"]"
;
if
(
!
is_numeric
(
$name
)
)
{
if
(
is_array
(
$val
)
)
{
http_build_str_inner
(
$val
,
$name
,
$arg_separator
,
$args
)
;
}
else
{
$args
[
]
=
rawurlencode
(
$name
)
.
'='
.
urlencode
(
$val
)
;
}
}
}
}
}
复制代码
版权说明:
本网站凡注明“广州松河 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
相关主题:
优秀 的网页设计作品欣赏
网页设计中的留白
高级网页设计师培训
国际网页设计年鉴
网页设计视频教程下载
网页设计与制作 说课
网页设计师招聘要求
优秀的网页设计师
蛋糕店的网页设计
传智播客网页设计视频
·上一条:
CodeIgniter配置之XSS和CSRF
|
·下一条:
CodeIgniter心得体会
同类资讯
html中只有开始标签的,html规定元素标签可可以交叉吗?_html标
html中的i标签,html5所有标签都有结束标签吗?_html标签
html中字体倾斜的标签,html中 怎么将文本域的文字向上移?_htm
html中p标签的描述,HTML中,标记br和p有什么区别?_html标
html中添加图片的标签,如何在html中添加的图片上设置超链接?_ht
html中的图片标签是,html怎么把图片设置和div一样大?_html
html中显示视频的标签,嵌入视频播放器代码(HTML)是什么意思?_h
html中的定义标签,html中的tr标签含义?_html标签
html中的li标签,html中怎么使网页中两个链接隔开?_html标签
html中的td标签,html中的table标签中如何将几个合在一起的?
html标签中的a,html中a标签如何设置行宽高?_html标签
html中必须写的标签,html中什么标签用于定位内部样式表?_html
html中跨咧的标签,一个单元格占两行三列的HTML代码为?_html标
html中dt标签的全称,htmltd标签字体样式?_html标签
html中的a标签,html中用a标签跳转时怎么设置不打开新页面?_ht
HTML中框架的标签名,html标记的一般格式是什么?_html标签
html中的标签属性,html中的标签是什么意思?_html标签
html中的各种标签,html5里面新增的用于网页布局的标签有哪些?_h
html中的换行标签,label里面文字怎么会换行咋回事?_html标签
html中的font标签,html中字体font标签设置两个大小是什么意
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州松河信息科技有限公司 2005-2026 版权所有
粤ICP备16019765号
广州松河信息科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com