ThinkPHP - URL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP - URL相关的知识,希望对你有一定的参考价值。
URL: 一、URL规则 1、默认是区分大小写,可以修改(配置文件)为不区分大小写。 2、 //修改URL大小写问题 ‘URL_CASE_INSENSITIVE‘ =>true, 如果模块名为 UserGroupAction,因为过于复杂。 那么url着模块就必须要写成: http://localhos/thinkphp/index.php/user_group/index (user与group之间有下划线) 3、如果 ‘URL_CASE_INSENSITIVE‘ =>false, 那么url的模块可以直接写成: http://localhos/thinkphp/index.php/UserGroup/index 二、URL伪静态 1、默认的ThinkPHP已经为我们开启了伪静态, 可以直接在地址栏输入:http://localhos/thinkphp/index.php/UserGroup/index.html 2、可以限制伪静态的后缀: ‘URL_HTML_SUFFIX‘=>‘html|shtml|xml‘ // 多个用 | 分割 三、URL路由 1、要使用路由规则,那么URL模式要为 PATH_INFO模式 2、在配置文件中,开启路由支持,并书写路由规范。 - 规则表达式配置路由 ‘URL_ROUTER_ON‘=>true, ‘URL_ROUTE_RULES‘=>array( //静态地址路由,没有动态的变量。 //可以这样访问【 URL:http://localhost/thinkphp2/index.php/my 】 ‘my‘=>‘Index/index‘, //动态地址路由 //加上 \d代表类型只能是数字 ‘year/:year\d/:month\d/:date\d‘=>‘Index/index‘,//动态和静态混合地址路由 // 加上$说明地址中只能是 my/1000后面不能有其他内容了 ‘my/:id$‘=>‘Index/index‘, //动态静态混合地址路由,有动态的变量,也有静态值,动态变量 [ :num ],可以以GET传参的方式,交给Index/index,模块中的方法。 //可以这样访问【 URL:http://localhost/thinkphp2/index.php/id/23 】 // 后台 $_GET[‘num‘],即可获得id的值。(id是名称,num是id的值) ‘id/:num‘=>‘Index/index‘, ), - 正则表达式配置路由 ‘/^year\/(\d{4})\/(\d{2})\/(\d{2})/‘=>‘Index/index?year=:1&month=:2&date=: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重写 通常的URL里面含有index.php,为了达到更好的SEO效果可能需要去掉URL里面的index.php , 通过URL重写的方式可以达到这种效果,通常需要服务器开启URL_REWRITE模块才能支持。 下面是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://serverName/index.php/Blog/read/id/1 就可以通过访问 http://serverName/Blog/read/id/1 简化了URL地址。 五、URL生成 参考手册
以上是关于ThinkPHP - URL的主要内容,如果未能解决你的问题,请参考以下文章