thinkphp5系列之URL伪静态(生成优雅的URL)

发布时间:1970-01-01  编辑:Mrs.默先森 

    伪静态是相对真实静态来讲的,通常我们为了增强搜索引擎的友好面,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息。或者还想运用动态脚本解决一些问题。不能用静态的方式来展示网站内容。但是这就损失了对搜索引擎的友好面。怎么样在两者之间找个中间方法呢,这就产生了伪静态技术...

    URL重写

    可以通过URl重写隐藏应用的入口文件index.php

    Apache服务器配置:

    1. httpd.conf配置文件中加载了mod_rewrite.so模块

    2. AllowOverride None 将None改为 All

    3. 把下面的内容保存为.htaccess文件放到应用入口文件的同级目录下

    <IfModule mod_rewrite.c>
    Options +FollowSymlinks -Multiviews
    RewriteEngine on
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
    </IfModule>

    注册路由规则

    路由定义采用\think\Route类的rule方法注册,通常是在应用的路由配置文件application/route.php进行注册,格式是

    Route::rule(‘路由表达式’,‘路由地址’,‘请求类型’,‘路由参数(数组)’,‘变量规则(数组)’);


    在router.php中默认有以下代码:

    return [
        '__pattern__' => [
            'name' => '\w+',
        ],
        '[hello]'     => [
            ':id'   => ['index/hello', ['method' => 'get'], ['id' => '\d+']],
            ':name' => ['index/hello', ['method' => 'post']],
        ],
    ];

    当请求:<a href='{:url('qqlogin/index/index')}'>qq登录</a>

    会访问到:http://blog.ishilf.com/qqlogin/index/index.html

    那么我们可以这样配置路由

    return [
        '__pattern__' => [
            'name' => '\w+',
        ],
       '[qq]'     => [
          ''   => ['qqlogin/index/index', ['method' => 'get']],
       ],
    ];

    那么当请求:<a href='{:url('qqlogin/index/index')}'>qq登录</a>

    会看到地址栏生成地址:http://blog.ishilf.com/qq.html


    如果携带参数的情况;

    return [
        '__pattern__' => [
            'name' => '\w+',
        ],
        '[hello]'     => [
            ':id'   => ['qqlogin/index/index', ['method' => 'get'], ['id' => '\d+']],
        ],
    ];

    那么当请求:<a href='{:url('qqlogin/index/index')}'>qq登录</a>

    会看到请求地址:http://blog.ishilf.com/qq/10.html



    或者是你可以这样注册路由:

    Route::rule('qq','qqlogin/index/index','GET');
    Route::rule('qq/:id','qqlogin/index/index','GET');        #带参数

    请求类型包括:GET(GET请求)、POST(POST请求)、PUT(PUT请求)、DELETE(DELETE请求)、*(任何请求)

    这里需要注意:请求类型参数必须大写

    系统提供了为不同的请求类型定义路由规则的简化方法,例如:

    Route::get('new/:id','News/read'); // 定义GET请求路由规则
    Route::post('new/:id','News/update'); // 定义POST请求路由规则
    Route::put('new/:id','News/update'); // 定义PUT请求路由规则
    Route::delete('new/:id','News/delete'); // 定义DELETE请求路由规则
    Route::any('new/:id','News/read'); // 所有请求都支持的路由规则

    伪静态

    ThinkPHP支持伪静态URL设置;可以通过设置application/config中url_html_suffix参数随意在URL的最后增加你想要的静态后缀,而不会影响当前操作的正常执行

    默认情况下,伪静态的设置为html  

    你可能会感兴趣

    thinkphp5系列之数据库迁移工具(轻松的修改跟共享数据库结构)

    标签php nginx Linux


本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。

陶太富博客 http://blog.taotaifu.cn

最新发布

最新评论

0.055417s