原文: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

}

thinkphp URL规则、URL伪静态、URL路由、URL重写、URL生成(十五)的更多相关文章

  1. 【转载】ASP.NET MVC重写URL制作伪静态网页,URL地址以.html结尾

    在搜索引擎优化领域,静态网页对于SEO的优化有着很大的好处,因此很多人就想把自己的网站的一些网页做成伪静态.我们现在在网络上发现很多博客网站.论坛网站.CMS内容管理系统等都有使用伪静态这一种情况,伪 ...

  2. ThinkPHP URL伪静态、路由规则、重写、生成

    一.URL规则    1.默认是区分大小写的     2.如果我们不想区分大小写可以改配置文件        'URL_CASE_INSENSITIVE'=>true,//url不区分大小写   ...

  3. PHPCMS V9静态化HTML生成设置及URL规则优化

    先讲讲Phpcms V9在后台怎么设置生成静态化HTML,之后再讲解怎么自定义URL规则,进行URL地址优化.在这一篇中,伪静态就不涉及了,大家可以移步到Phpcms V9全站伪静态设置方法. 一.静 ...

  4. discuz X3.1的门户文章实现伪静态,利于搜索引擎收录url的地址修改

    最近在捣鼓DZ框架,这两天发现文章的收录情况并不是太理想,做了很多优化方面的工作,今天主要解决了DZ门户的文章链接伪静态化,在这次修改之前,也做过一次在网上找的静态化修改,之前做的方式是: 1.在DZ ...

  5. 利用apache的mod_rewrite做URL规则重写

    使用mod_rewrite做url重写,伪静态,做过很多次,这次用几个例子记下来,便于后面查用. 使用方法: 1.在conf目录的httpd.conf文件中找到: LoadModule rewrite ...

  6. flask动态url规则

    动态URL规则 URL规则可以添加变量部分,也就是件更符合同规则的URL抽象成一个URL模式. @app.route('/item/<id>') def item(id): return ...

  7. day64 url用法以及django的路由系统

    此篇博客是以备后查的,用到的时候记得过来查找即可! 路由系统:就是我们的django项目创建的时候自带的那个urls.py 它本身里面是映射的对应关系,一个大的列表里面,一个个元祖,元祖里面是url或 ...

  8. Django 路由系统(URL)

    介绍 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表. 你就是以这种方式告 ...

  9. Python学习笔记整理总结【Django】【MVC/MTV/路由分配系统(URL)/视图函数 (views)/表单交互】

     一.Web框架概述  Web框架本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python # -*- coding:utf-8 ...

随机推荐

  1. 基于visual Studio2013解决C语言竞赛题之0608水仙花函数

     题目 解决代码及点评 /* 功能:写一函数判断某数是否"水仙花数",所谓"水仙花数"是指一个三位数, 其各位数字立方和等于该数本身. */ #includ ...

  2. Java 螺纹第三版 第三章数据同步 读书笔记

    多线程间共享数据问题 一.Synchronizedkeyword      atomic一词与"原子"无关,它以前被觉得是物质的最小的单元,不能再被拆解成更小的部分.      当 ...

  3. 机器时代的中国字幕(Automata.2014.720p.WEB-DL.DD5.1.H264-RARBG.srt)

    看字幕.再也看不下去.自己翻译的位 评价的探讨 1 00:01:58,452 --> 00:02:02,088 人工增雨 期限为32分钟16第二 2 00:02:02,089 --> 00 ...

  4. StreamWrite-StreamRead 读写文本文件

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  5. WinForm - ListView点击空白事件

    有时看似很小的一个问题却可能困扰我们许久,比如ListView这个问题,其Click事件只是在有选中项的时候才触发,点击其空白处(无选中项)是不会触发Click事件的,找了许久才终于找到解决这个问题的 ...

  6. C语言,C++,static

    术语static有着不寻常的历史.起初,在C中引入关键字static是为了表示退出一个块后仍然存在的局部变量.随后,static在C中有了第二种含义:用来表示不能被其它文件访问的全局变量和函数.为了避 ...

  7. 《WCF技术剖析》博文系列汇总[持续更新中]

    原文:<WCF技术剖析>博文系列汇总[持续更新中] 近半年以来,一直忙于我的第一本WCF专著<WCF技术剖析(卷1)>的写作,一直无暇管理自己的Blog.在<WCF技术剖 ...

  8. android ble蓝牙开发略解

    Android 蓝牙4.0开发 1.  权限和相关属性 “android:required="true"表示apk只有在具有bluetooth_le属性的系统里运行,这个4.3之前 ...

  9. 【小白的java成长系列】——javakeyword

    准备出一个系列的内容啦,今天就从keyword開始说起吧~ 类型 keyword 说明 keyword 说明 訪问控制权限 public 公共的.公开的. protected 受保护的.用来修饰属性或 ...

  10. C++经典书目索引及资源下载

    C++经典书目索引: 严重申明 : 本博文未经原作者(jerryjiang)同意,不论什么人不得转载和抄袭 ! Essential C++ 中文版 层次:0基础 导读:<Essential C+ ...