我是靠谱客的博主 大方歌曲,最近开发中收集的这篇文章主要介绍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/:yeard/:monthd/:dated'=>'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/:idd'=>'Index/index',
                    'my/:name'=>'Index/index',
                    )
                2.可以使用$作为完全匹配的路由规则
                        'URL_ROUTE_RULES'=>array(
                            'my/:idd$'=>'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',
    ),

 

转载于:https://www.cnblogs.com/KTblog/p/5181905.html

最后

以上就是大方歌曲为你收集整理的ThinkPHP - URL - 伪静态 - 路由 - 重写的全部内容,希望文章能够帮你解决ThinkPHP - URL - 伪静态 - 路由 - 重写所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部