隨著移動互聯網的普及,越來越多的web應用需要支持手機訪問,因此很多站點都會有一個專門的wap站點,以方便用戶在移動設備上訪問。然而,通過url訪問wap站點的方式并不是很友好,url通常會帶有“wap.php”等后綴,給用戶使用帶來了麻煩。本文將介紹一種將“wap.php”隱藏的方法,使wap站點更加友好。
一、引言
thinkphp是一種開源的PHP框架,它以面向對象編程為基礎,重度依賴mvc設計模式,通過封裝ORM層,連接數據源,快速開發(fā)web應用。對于需要支持WAP版面的thinkphp應用而言,隱藏“wap.php”是一種提高用戶訪問體驗的有效方法。
二、思路分析
在thinkphp框架中,URL地址映射和路由規(guī)則是由核心路由組件負責的。因此,我們可以通過修改路由規(guī)則,隱藏“wap.php”后綴,達到WAP站點URL友好化的目的。具體實現方法如下:
立即學習“PHP免費學習筆記(深入)”;
1.修改App/Conf/config.php文件:
'URL_ROUTER_ON' => true, 'URL_ROUTE_RULES' => array( 'wap' => 'Index/Wap/index', ':action' => 'Index/:1', ),
2.創(chuàng)建Wap模塊,修改模塊對應的Action:
class WapAction extends Action { public function _empty() { $this -> display('Index:index'); } public function index() { $this -> display(); } }
三、實現步驟
1.創(chuàng)建Wap模塊
在thinkphp中,一個應用程序可以搭建多個模塊,一個模塊是獨立的目錄,包含獨立的視圖和控制器。我們可以通過執(zhí)行以下命令創(chuàng)建Wap模塊:
php thinkphp.php -m -a Index -s Wap
執(zhí)行該命令后,會在應用程序目錄下創(chuàng)建Wap目錄,并在該目錄下創(chuàng)建一個Index控制器。我們需要將該控制器重命名為WapController.class.php。
2.修改App/Conf/config.php文件
修改配置文件中的路由規(guī)則,將“wap”映射到Wap模塊的Index控制器上。
'URL_ROUTER_ON' => true, 'URL_ROUTE_RULES' => array( 'wap' => 'Wap/Index/index', ':action' => 'Index/:1', ),
此時,當用戶訪問“http://example.com/wap”時,將會調用Wap模塊的Index控制器的indexAction方法。
3.修改Wap模塊控制器
修改Wap模塊中的Index控制器,以實現將“wap.php”后綴隱藏。首先,我們需要通過_empty()方法來攔截所有不存在的方法。當Wap模塊中不存在指定的方法時,就會執(zhí)行_empty()方法中指定的結果,我們可以返回呈現指定的模板文件。例如:
class WapController extends Controller { protected $is_wap = true; public function _empty() { $this -> display('Index:index'); } public function index() { $this -> display(); } }
當某個方法不存在時,_empty()將被執(zhí)行并呈現Index:index模板。
四、總結
通過修改thinkphp框架的路由規(guī)則和模塊控制器,我們可以將“wap.php”后綴隱藏,提高WAP站點URL的友好度,從而提升用戶體驗。通過攔截不存在的方法,我們還可以實現錯誤處理和防止站點被爬蟲抓取的目的。