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生成 参考手册
URL路由:
- www.***.com/c_23.html,进入列表页
- www.***.com/34.html,进入内容页
//URL路由 \'URL_ROUTER_ON\' => true, \'URL_ROUTE_RULES\' => array( \'/^c_(\d+)$/\' => \'Home/List/index?id=:1\',//前面要加上Home项目名 \'/^(\d+)$/\' => \'Home/Show/index?id=:1\', ),