开发者社区> 杰克.陈> 正文

thinkphp URL规则、URL伪静态、URL路由、URL重写、URL生成(十五)

简介: 原文: thinkphp URL规则、URL伪静态、URL路由、URL重写、URL生成(十五) 本章节:详细介绍thinkphp URL规则、URL伪静态、URL路由、URL重写、URL生成 一、URL规则1、默认是区分大小写的 2、如果我们不...
+关注继续查看
原文: thinkphp URL规则、URL伪静态、URL路由、URL重写、URL生成(十五)

本章节:详细介绍thinkphp URL规则、URL伪静态、URL路由、URL重写、URL生成



一、URL规则
1、默认是区分大小写的 
2、如果我们不想区分大小写可以改配置文件
'URL_CASE_INSENSITIVE'=>true,//url不区分大小写
*模块命名太长的情况:
A、如果模块名为 UserGroupAction,复杂模块(一般是IndexAction)
那么url找模块就必要要写成
http://localhost/thinkphp4/index.php/user_group/index
B、如果'URL_CASE_INSENSITIVE'=>false(区分大小写的情况可以访问)
那么url也可以写为
http://localhost/thinkphp4/index.php/UserGroup/index


二、URL伪静态(tp默认支持伪静态)
http://localhost/thinkphp4/index.php/UserGroup/index.xml
*默认pdo、html、xml...都是支持的,如果要限制加个配置就行
'URL_HTML_SUFFIX'=>'html|shtml|xml',//限制伪静态的后缀


三、URL路由
1、启动路由
要在配置文件中开启路由支持
'URL_ROUTER_ON'   => true, //开启路由
2、使用路由
1.规则表达式配置路由
'URL_ROUTER_ON'   => true, //开启路由
'URL_ROUTE_RULES' => array( 
'my'=>'Index/index',//静态地址路由 访问:http://localhost/thinkphp/index.php/my
':id/:num'=>'Index/index',/*后面的数字值随便写,字母也行
  动态地址路由 访问:http://localhost/thinkphp/index.php/10/200
          可以再模块控制器中用get方式传值  或 获取
           echo $_GET['id'];
           echo $_GET['num'];   
         */
'my/:num'=>'Index/index', //动静混合地址路由  http://localhost/thinkphp/index.php/my/200  
'year/:year/:month/:date'=>'Index/index',//动态和静态混合地址路由:                          http://localhost/thinkphp/index.php/year/2014/12/21
'year/:year\d/:month\d/:date\d'=>'Index/index',//动态和静态混合地址路由 --加上 \d代表类型只能是数字
'my/:id$'=>'Index/index',// 加上$说明地址中只能是 my/1000 后面不能有其他内容了
);


2.正则表达式配置路由
//http://localhost/thinkphp/index.php/year/2014/12/21
'/^year\/(\d{4})\/(\d{2})\/(\d{2})/'=>'Index/index?year=:1&month=:2&date=:3'


3、注意事项:
1.越复杂的路由越往前面放
'URL_ROUTE_RULES'=>array(
'my/:year/:month:/:day'=>'Index/day',  *复杂的路由放在前面,放后面就不会执行
'my/:id\d'=>'Index/index',
'my/:name'=>'Index/index',
)
2.可以使用$作为完全匹配的路由规则(不管复杂否,都会匹配所有正则)
'URL_ROUTE_RULES'=>array(
'my/:id\d$'=>'Index/index',
'my/:name$'=>'Index/index',
'my/:year/:month:/:day$'=>'Index/day',
),
3.用正则匹配的方式
'URL_ROUTE_RULES'=>array(
'/^my\/(\d+)$/'=>'Index/index?id=:1',
'/^my\/(\w+)$/'=>'Index/index?name=:1',
'/^my\/(\d{4})\/(\d{2})\/(\d{2})$/'=>'Index/day?year=:1&month=:2&day=:3',
),


四、URL重写
比如:http://localhost/thinkphp/index.php/Index/index.html/t/my   ---- 不想让index.php出现
下面是Apache的配置过程,可以参考下:
1、httpd.conf配置文件中加载了mod_rewrite.so模块
2、AllowOverride None 将None改为 All
3、确保URL_MODEL设置为2 (该步骤省略)
4、把下面的内容保存为.htaccess文件放到入口文件的同级目录下
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
重启Apache之后,原来的
就可以通过访问
http://localhost/thinkphp/Index/index.html/t/my  --简化了URL地址,对SEO的支持度好点


五、URL生成(手册有详细介绍)
public function url(){
echo U('Index/add'); // 生成Index模块的add操作的URL地址
///thinkphp/index.php/index/add
}


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Nginx实战(二) URL重写
Nginx实战(二) URL重写
60 0
详解IIS中的重写工具下关于操作重定向URL中的{R:N}与{C:N}
详解IIS中的重写工具下关于操作重定向URL中的{R:N}与{C:N}
67 0
Nginx反向代理/location/URL重写功能实战| 学习笔记
快速学习Nginx反向代理/location/URL重写功能实战。
65 0
Nginx反向代理/location/URL重写功能实战
一、Nginx反向代理常用实战 二、location 应用实例
693 0
UrlRewrite:重写url,实现伪静态、缩短URL、高安全性
UrlRewrite:重写url,实现伪静态、缩短URL、高安全性
187 0
如何在 ASP.NET Core 中重写 URL
如何在 ASP.NET Core 中重写 URL
72 0
session 之 url 重写|学习笔记
快速学习 session 之 url 重写
100 0
修改.htaccess域名www与不带www301重定向跳转重写URL
Apache下web环境,通过修改.htaccess文件即可实现重写URL,尤其是处于SEO考虑,将域名格式统一,例如将带www的域名统一301重定向到不带www的域名,或者将不带www的域名统一301重定向到带www的域名。
1152 0
Nginx之9易筋神功 - (URL重写)
Nginx从入门到深入之URL重写
1780 0
Nginx实现URL重写
利用Nginx实现URL重写,本文使用Nginx与静态页面配合重写URL。
1904 0
+关注
杰克.陈
一个安静的程序猿~
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载