PHP中路由和rewrite的使用

一、场景介绍:

1、简化url地址,方便大家记忆

2、有利于搜索引擎优化

3、安全(让用户看不出网站的目录结构)

举例:比如我这里将main控制器中的bb方法路由到kk,这样,我们a标签请求跳转到cp.xiaobudiu.top/kk,实际上请求的却是cp.xiaobudiu.top/main/bb。

实际上:我们可以将路由理解成一个字符串的别名,比如上边,kk就是main/bb的别名。

 

 

二、单独使用路由实现url隐藏目录结构,优化url

 

1、定义连接符

这里使用的是crossphp框架,如果使用tp框架或者laravel框架等,也有对应的设置项。

注:这时,请求main控制器中的bb方法,url地址格式就从原来的cp.xiaobudiu.top/main/bb/  变成  cp.xiaobudiu.top/main-bb/

 

2、定义a标签到对应的控制器方法中

注:如果需要传递参数,可以拼接字符串。

当然,最好使用框架自带的生成URL地址的方式(好处是动态生成url,并且支持传递参数)

比如:

 

3、浏览器生成的url地址如下:

这时,点击a标签,就会跳转到main控制器中的bb方法。

 

4、通过框架路由,实现变化url,隐藏目录结构,优化url的目的【其他框架类似】

注:其实,路由就是一个别名而已,不要想的特别高大上。

比如上边,我将main控制器的bb方法路由到kk,那么我们请求cp.xiaobudiu.top/main-bb  ,  和请求cp.xiaobudiu.top/kk  请求的都是main控制器的bb方法。

 

5、定义a标签

注:这时,我们为了隐藏目录结构和优化url,则可以将a标签的href更改成我们定义的路由地址

比如这里,我们由于定义了main/bb  路由到 kk,所以a标签这样写。

再次强调:路由只是一个别名,你想url怎么变化,都看你的心情定义路由。

 

6、这时,生成的a标签链接如下

 

点击a标签,就会访问到

 

这样,我们就实现了更改url地址,隐藏目录结构,优化url的目的。

 

 

三、使用路由和nginx rewrite规则相结合的方式(推荐)

 

1、为什么要使用路由和nginx rewrite规则相结合的方式

注:上面是单纯使用路由达到这个更改url地址,隐藏目录结构,优化url目的,但是实际场景中,我们生成url地址一般不是直接指定的,而是通过框架的方法来生成url,生成url时,肯定用的是原来的控制器和方法,而不是直接往上面写路由,这时,我们生成的url格式就是

cp.xiaobudiu.top/main-bb ,  而不是我们期望的 cp.xiaobudiu.top/kk , 这样,也就达不到我们想要的隐藏目录结构的目的。

这时,我们就需要结合路由和rewrite规则。

 

2、原理:

(1)举例我们a标签中的href 是通过框架的方法生成的url,生成之后的url地址格式如下:

cp.xiaobudiu.top/main-bb

(2)用户点击a标签,我们通过nginx 的rewrite规则将当前url重定向到一个新的网址,也就是我们期望的网址

比如,我们在nginx中定义rewrite规则,将 main-bb 重定向到kk

location / {if (!-e $request_filename) {rewrite ^/main-bb-(\d+)/ /kk-$1/ permanent;rewrite ^/(.*)$ /index.php?$1 last;}}

这时,点击a标签(href为cp.xiaobudiu.top/main-bb),nginx服务器会自动将其永久重定向到 cp.xiaobudiu.top/kk

注:此时会报错,因为找不到kk的位置(当然找不到了,我们还没有定义路由,给main-bb起别名为kk呀)

(3)定义路由

/**     * 路由配置     * 'index' => 'main:index'     * 为 main->index 指定别名为index     * 如果为控制器和方法指定了别名,会自动使用别名     */'router' => array('kk'        =>  'main:bb','help'      =>  'help:index',),

(4)现在,由于我们已经定义了相应的路由,nginx重定向后的url cp.xiaobudiu.top/kk  就会自动找到main控制器的bb方法,也就实现了我们的目的。

 

注:领取阿里云优惠券、推荐码(附使用教程):http://www.aliyouhui.top

已标记关键词 清除标记
相关推荐
<p> <span style="color:#4d4d4d;">当前课程中博客项目的实战源码是我在 GitHub上开源项目 My-Blog,目前已有 2000 多个 star:</span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdnimg.cn/202103310649344285.png" alt="" /><br /> </span> </p> <p> <span style="color:#4d4d4d;">本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 个人博客项目功能的讲解,<span style="color:#565656;">通过本课程的学习,不仅仅让你掌握基本的 Spring Boot 开发能力以及 Spring Boot 项目的大部分开发使用场景,同时帮你提前甄别和处理掉将要遇到的技术难点,认真学完这个课程后,你将会对 Spring Boot 有更加深入而全面的了解,同时你也会得到一个大家都在使用的博客系统源码,你可以根据自己的需求和想法进行改造,也可以直接使用它来作为自己的个人网站,这个课程一定会给你带来巨大的收获。</span></span> </p> <p> <span style="color:#4d4d4d;"><span style="color:#565656;"> </span></span> </p> <p> <span style="color:#e53333;"><span style="color:#e53333;"><strong>课程特色</strong></span></span> </p> <p> <span style="color:#e53333;"><span style="color:#e53333;"><strong> </strong></span></span> </p> <p> <span style="color:#4d4d4d;"><span style="color:#565656;"> </span></span> </p> <ol> <li> <span style="color:#565656;">课程内容紧贴 Spring Boot 技术栈,涵盖大部分 Spring Boot 使用场景。</span> </li> <li> <span style="color:#565656;">开发教程详细完整、文档资源齐全、实验过程循序渐进简单明了。</span> </li> <li> <span style="color:#565656;">实践项目页面美观且实用,交互效果完美。</span> </li> <li> <span style="color:#565656;">包含从零搭建项目、以及完整的后台管理系统和博客展示系统两个系统的功能开发流程。</span> </li> <li> <span style="color:#565656;">技术栈新颖且知识点丰富,学习后可以提升大家对于知识的理解和掌握,对于提升你的市场竞争力有一定的帮助。</span> </li> </ol> <p> <strong>实战项目预览</strong> </p> <p> <span style="color:#4d4d4d;"><span style="color:#565656;"><span style="color:#e53333;"><strong> </strong></span></span></span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdn.net/202005150303066258.png" alt="" /><br /> </span> </p> <p>   </p> <p> <span style="color:#4d4d4d;"> </span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdn.net/202005150305396930.png" alt="" /><br /> </span> </p> <p> <span style="color:#4d4d4d;"> </span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdn.net/202005150305528842.png" alt="" /><br /> </span> </p> <p> <span style="color:#4d4d4d;"> </span> </p> <p> <span style="color:#4d4d4d;"><img src="https://img-bss.csdn.net/202005150306056323.png" alt="" /><br /> </span> </p>
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页