假設(shè)有這樣的一個(gè)訪問(wèn)地址
http://localhost/user/login
如何讓它路由到user控制器痊夭,的login方法呢?類似于
http://localhost/index.php ? controller=user & action=login
Just do it
首先呢耘子,像http://localhost/user/login
的路徑果漾,它對(duì)應(yīng)的網(wǎng)站根目錄下并沒(méi)有這樣的資源,是通過(guò)一定規(guī)則解釋出來(lái)的谷誓,稱為偽靜態(tài)绒障。
第一步
在Server應(yīng)用的配置文件中,開(kāi)啟Rewrite重寫(xiě)模塊片林。比如主流的nginx端盆、apache都支持該模塊。
第二步
在index.php的目錄下费封,創(chuàng)建一個(gè).htaccess文件焕妙,注意,沒(méi)有文件名弓摘。這個(gè)文件是Rewrite可識(shí)別的分布式配置文件焚鹊,內(nèi)容可以為:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9/]*)$ index.php/$1
解釋一下,
第一行韧献,RewriteEngine On
:開(kāi)啟重寫(xiě)
第二末患、三行,RewriteCond %{REQUEST_FILENAME} !-d
與RewriteCond %{REQUEST_FILENAME} !-f
:如果不存在該目錄或文件锤窑,才走下一條規(guī)則
第四行璧针,RewriteRule ^([a-zA-Z0-9/]*)$ index.php/$1
:把localhost后面的路徑user/login丟給index.php去處理,即路徑重寫(xiě)為index.php/user/login
第三步
index.php中渊啰,路徑即可通過(guò)取出 $_SERVER['REQUEST_URI']
探橱,按照自己的規(guī)則,分割字符串绘证,得到想要的路由參數(shù)隧膏。
比如上面的例子,按照/controller/action分割的話嚷那,那么controller=user胞枕、action=logIn
$c = new $controller();
$c->$action();
其實(shí)也挺簡(jiǎn)單的,動(dòng)手吧~