像這樣域名太長读跷,搜索引擎爬蟲的時候就不會收錄的太好梗搅。
這個時候,就需要定義路由了效览。
定義路由无切,就是假設(shè)按照上面的網(wǎng)址,那么訪問這樣網(wǎng)站的時候丐枉,也是可以正確訪問哆键。那么就是定義路由成功了。定義路由的規(guī)則也可以自己定
在thinkphp5框架的application文件夾中瘦锹,有route.php文件籍嘹,這個文件中就是定義路由規(guī)則的。
下面這張圖弯院,是域名和定義路由規(guī)則的對應(yīng)關(guān)系
路由解釋:不看域名部分辱士,url中以hello開始的,有參數(shù)name的听绳,都會去訪問index模塊下的index控制器下的hello方法颂碘。條件就是是get請求,后綴為html
上面的[:name]加方括號的原因是表示這個參數(shù)可以有椅挣,也可以沒有头岔,是可選的。如果將方括號去掉贴妻,那么用戶提交url的時候切油,就必須要有這個參數(shù),否則就會報錯名惩。
只有像這樣澎胡,添加參數(shù)之后,才能訪問成功
如果不想在route.php中配路由的話娩鹉,也可以這么配
如果要傳入多個參數(shù)攻谁,就發(fā)現(xiàn)路徑又很長了
因此,為了更短的路徑弯予,就需要再次去config.php中進行配置
配置好了之后戚宦,再去url欄輸入地址嘗試
可以看到,參數(shù)和參數(shù)值都可以一一對應(yīng)了锈嫩。那么這樣有什么好處呢受楼?
這樣就可以欺騙搜索引擎的抓取了垦搬。讓搜索引擎誤認為這就是訪問的是hello文件夾下的aaa文件夾下的那個很長名字的文件。而實際上艳汽,這里卻是用戶提交的多個參數(shù)猴贰、參數(shù)值。
再看一個例子:
這里例子可以看到:year和:month是必選的參數(shù)河狐,如果給他們直接加上[]方括號米绕,那么會報錯。加了方括號馋艺,代表他們是可選的栅干,既然是可選的,在原來的控制器的today方法中就需要給形參year和month賦予默認值捐祠,這樣就不會報錯了碱鳞。
至于為什么要生成url地址,暫時還不清楚雏赦,接著往下學(xué)(貌似是為了得到一個路徑劫笙,這個路徑有用)
首先芙扎,要想使用生成url的函數(shù)星岗,那么必須得先引入一些類文件,否則就會出現(xiàn)如下報錯
引入類文件之后戒洼,就可以正常使用相應(yīng)的方法了
如下圖俏橘,框出來的部分所代表的含義是使用Url::build方法,將a=1&b=2這個參數(shù)傳到當(dāng)前控制器中的url2方法中圈浇。若沒有url2寥掐,那么默認傳到當(dāng)前方法中
但是,在導(dǎo)入url類文件之后磷蜀,建議不用上面的那種框出來的使用方法召耘,建議直接使用url()方法,更加簡潔省事褐隆,效果還一樣污它。