像这样域名太长,搜索引擎爬虫的时候就不会收录的太好。
这个时候,就需要定义路由了。
定义路由,就是假设按照上面的网址,那么访问这样网站的时候,也是可以正确访问。那么就是定义路由成功了。定义路由的规则也可以自己定
在thinkphp5框架的application文件夹中,有route.php文件,这个文件中就是定义路由规则的。
下面这张图,是域名和定义路由规则的对应关系
路由解释:不看域名部分,url中以hello开始的,有参数name的,都会去访问index模块下的index控制器下的hello方法。条件就是是get请求,后缀为html
上面的[:name]加方括号的原因是表示这个参数可以有,也可以没有,是可选的。如果将方括号去掉,那么用户提交url的时候,就必须要有这个参数,否则就会报错。
只有像这样,添加参数之后,才能访问成功
如果不想在route.php中配路由的话,也可以这么配
如果要传入多个参数,就发现路径又很长了
因此,为了更短的路径,就需要再次去config.php中进行配置
配置好了之后,再去url栏输入地址尝试
可以看到,参数和参数值都可以一一对应了。那么这样有什么好处呢?
这样就可以欺骗搜索引擎的抓取了。让搜索引擎误认为这就是访问的是hello文件夹下的aaa文件夹下的那个很长名字的文件。而实际上,这里却是用户提交的多个参数、参数值。
再看一个例子:
这里例子可以看到:year和:month是必选的参数,如果给他们直接加上[]方括号,那么会报错。加了方括号,代表他们是可选的,既然是可选的,在原来的控制器的today方法中就需要给形参year和month赋予默认值,这样就不会报错了。
至于为什么要生成url地址,暂时还不清楚,接着往下学(貌似是为了得到一个路径,这个路径有用)
首先,要想使用生成url的函数,那么必须得先引入一些类文件,否则就会出现如下报错
引入类文件之后,就可以正常使用相应的方法了
如下图,框出来的部分所代表的含义是使用Url::build方法,将a=1&b=2这个参数传到当前控制器中的url2方法中。若没有url2,那么默认传到当前方法中
但是,在导入url类文件之后,建议不用上面的那种框出来的使用方法,建议直接使用url()方法,更加简洁省事,效果还一样。
网友评论