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> <b><span style="background-color:#FFE500;">【超实用课程内容】</span></b> </p> <p> <br /> </p> <p> <br /> </p> <p> 本课程内容包含讲解<span>解读Nginx的基础知识,</span><span>解读Nginx的核心知识、带领学员进行</span>高并发环境下的Nginx性能优化实战,让学生能够快速将所学融合到企业应用中。 </p> <p> <br /> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><br /> </b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><span style="background-color:#FFE500;">【课程如何观看?】</span></b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> PC端:<a href="https://edu.csdn.net/course/detail/26277"><span id="__kindeditor_bookmark_start_21__"></span></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 移动端:CSDN 学院APP(注意不是CSDN APP哦) </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 本课程为录播课,课程永久有效观看时长,大家可以抓紧时间学习后一起讨论哦~ </p> <p style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <br /> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <strong><span style="background-color:#FFE500;">【学员专享增值服务】</span></strong> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b>源码开放</b> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 下载方式:电脑登录<a href="https://edu.csdn.net/course/detail/26277"></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a>,播放页面右侧点击课件进行资料打包下载 </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p>
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页