如何修改thinkPHP路由規(guī)則,使U方法自動生成偽靜態(tài)鏈接

效果

假設(shè)網(wǎng)站域名是A.com,那么可以:
通過
A.com/xwzx.html
訪問
A.com/Home/News/index.html?id=xwzx
或者通過
A.com/xwzx_1.html
訪問
A.com/Home/News/index.html?id=xwzx&p=1

最關(guān)鍵的是:

使用
U('Home/News/index', array('id'=>xwzx))
生成
A.com/xwzx.html鏈接
或者使用
U('Home/News/index', array('id'=>xwzx,'p'=>1))
生成
A.com/xwzx_1.html鏈接
以此類推

目的

其實ThinkPHP3.2.3的路由部分使用場景并不多,究其原因是因為路由規(guī)則可以設(shè)置并正常訪問,但是卻沒有自動生成路由的方法。比如說你配置完一個路由規(guī)則A.com/xwzx.html是可以正常訪問的,卻發(fā)現(xiàn)有大量的鏈接U('Home/News/index', array('id'=>xwzx))需要修改為/xwzx.html,使用的U方法并不能自動完成轉(zhuǎn)化。
所以我們的目的就是,讓U方法可以根據(jù)路由規(guī)則反推出偽靜態(tài)的鏈接。這樣做有什么好處呢?

  1. 如果有老項目需要配置全站的偽靜態(tài)規(guī)則,這樣做可以減少工作量,一切只需要配置即可。
  2. 在需要發(fā)起支付的頁面,通常會帶多個參數(shù),這樣就不利于我們配置支付接口的發(fā)起地址,此時用這個方法可以把多個參數(shù)合并到同一段URL中。更多支付接口配置內(nèi)容請參考PHP支付接口教程,詳解微信支付(一)
  3. 不需要做項目之前就事先處理偽靜態(tài)頁面,只需要正常寫U方法即可,加快開發(fā)速度。

思路

修改ThinkPHP底層的U方法,當(dāng)路由規(guī)則開啟時,通過規(guī)則反推出偽靜態(tài)鏈接。

配置規(guī)則同ThinkPHP官方的文檔,Application/Common/Conf/config.php配置如下:

'URL_ROUTER_ON' => true, // 開啟URL路由
'URL_ROUTE_RULES' => array(
//'CGIIP/:id/:p'=>'Home/News/index',
'/^([A-Za-z0-9]+)$/'=>'Home/News/index?id=:1',
'/^([A-Za-z0-9]+)_(d+)$/'=>'Home/News/index?id=:1&p=:2',
'4O4'=>'Admin/Index/notFound',
'test'=>'Home/Index/test',
), // 路由規(guī)則

修改ThinkPHP/Common/functions.php里面的U方法:

<script src="https://gist.coding.net/u/fourn/60d20945c81645b3b826330896c0fa93.js"></script>

完整functions.php文件代碼在Coding中:

代碼放到U方法中,“if($suffix){”這行代碼之前。
注意這些都是針對ThinkPHP3.2.3版本的哦

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,992評論 19 139
  • //更改模塊配置文件'URL_ROUTER_ON' => true,'URL_ROUTE_RUL...
    呦丶耍脾氣閱讀 1,032評論 0 0
  • 晚上軒軒吃奶奶,用手整痛我了,我沒忍住大聲罵了他一句,軒軒被嚇得愣住了!那個表情我現(xiàn)在想起都覺得心痛!他并不是故意...
    J_Jun閱讀 167評論 0 0
  • 活的自我2016.9.24
    JulyH閱讀 165評論 0 0
  • 最近的幾篇文章,不管質(zhì)量高低,都是主動涌現(xiàn)到我的腦海里才寫出來的,比如《關(guān)注學(xué)生生命成長》,《關(guān)注教師職業(yè)幸福》,...
    像話讀書爻閱讀 703評論 4 4