咨询电话:
15628812133
19
2019/01

tp5中定义url和路由的方法

发布时间:2019-01-19 18:01:14
发布者:神棍子
浏览量:
0


在使用tp5框架的时候,没有重写url地址的情况下,域名后面的后缀是非常长的,而url的地址长了的话就会对seo很不友好,所以在这种情况下,我们就应该对url地址进行配置

1.jpg

这个时候,就需要定义路由了。定义路由,就是假设按照上面的网址,那么访问这样网站的时候,也是可以正确访问。那么就是定义路由成功了。定义路由的规则也可以自己定

2.jpg

在thinkphp5框架的application文件夹中,有route.php文件,这个文件中就是定义路由规则的。

下面这张图,是域名和定义路由规则的对应关系

3.jpg

路由解释:不看域名部分,url中以hello开始的,有参数name的,都会去访问index模块下的index控制器下的hello方法。条件就是是get请求,后缀为html

4.jpg

上面的[:name]加方括号的原因是表示这个参数可以有,也可以没有,是可选的。如果将方括号去掉,那么用户提交url的时候,就必须要有这个参数,否则就会报错。只有像这样,添加参数之后,才能访问成功

5.jpg

如果不想在route.php中配路由的话,也可以这么配

6.jpg

如果要传入多个参数,就发现路径又很长了

7.jpg

因此,为了更短的路径,就需要再次去config.php中进行配置

8.jpg

配置好了之后,再去url栏输入地址尝试

9.jpg

可以看到,参数和参数值都可以一一对应了。那么这样有什么好处呢?这样就可以欺骗搜索引擎的抓取了。让搜索引擎误认为这就是访问的是hello文件夹下的aaa文件夹下的那个很长名字的文件。而实际上,这里却是用户提交的多个参数、参数值。

再看一个例子:

10.jpg

这里例子可以看到:year和:month是必选的参数,如果给他们直接加上[]方括号,那么会报错。加了方括号,代表他们是可选的,既然是可选的,在原来的控制器的today方法中就需要给形参year和month赋予默认值,这样就不会报错了。

11.jpg

至于为什么要生成url地址,暂时还不清楚,接着往下学(貌似是为了得到一个路径,这个路径有用)

12.jpg

首先,要想使用生成url的函数,那么必须得先引入一些类文件,否则就会出现如下报错

14.jpg

引入类文件之后,就可以正常使用相应的方法了

15.jpg

如下图,框出来的部分所代表的含义是使用Url::build方法,将a=1&b=2这个参数传到当前控制器中的url2方法中。若没有url2,那么默认传到当前方法中

16.jpg

但是,在导入url类文件之后,建议不用上面的那种框出来的使用方法,建议直接使用url()方法,更加简洁省事,效果还一样。

17.jpg18.jpg


除此之外我们还可以在Apache中重写url,详情请参考:Apache URL重写规则

关键词:
返回列表