標籤:

如何寫一個 PHP URL 路由?

怎麼用 PHP 寫一個 URL 路由?嘗試寫自己的框架,就差路由不知如何實現。

例如:

http://www.domain.com/控制器/ =&> http://www.domain.com/?c=控制器

http://www.domain.com/控制器/模塊/ =&> http://www.domain.com/?c=控制器a=模塊

http://www.domain.com/控制器/?參數1=值1…參數N=值N =&> http://www.domain.com/?c=控制器參數1=值1…參數N=值N

http://www.domain.com/控制器/模塊/?參數1=值1…參數N=值N =&> http://www.domain.com/?c=控制器a=模塊參數1=值1…參數N=值N

總的來說,就是第一個段永遠給控制器,第二個段永遠給模塊,其餘的,全部傳下去。然後考慮無模塊情況(index)。

有人說,用 URL Rewrite 也可以做到,那請問偽靜態規則是什麼?

原諒我表述不佳~

其實這個路由很像 CodeIgniter,但是我不喜歡那種 http://www.domain.com/控制器/模塊/值1/…/值N/ 的方式。


我想現在答主應該早已經解決問題了吧?

我寫一下給後人看吧。

下面是Php + Apache環境:

一、開啟apache的mod_rewrite(URL重寫模塊),並使Apache支持.htaccess

這個自行百度。

二、配置.htaccess

開啟了mod_rewrite後,只是開啟了URL重寫模塊,但是沒有配置URL重寫規則。所以要寫一下規則(這些規則是用正則表達式寫的,如果不會就很麻煩了)。

在網站根目錄創建一個.htaccess文件,然后里面輸入:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9/]*)$ index.php/$1

上面是我隨手寫的規則,肯定有更好的。

我解釋一下上面的規則:

假如有一個URL:

http://127.0.0.1/abc/def

經過上面的解析後,就變成了http://127.0.0.1/index.php/abc/def

三、創建index.php

&;
echo 模塊:,$pathinfo[2] != ?$pathinfo[2]:index;
echo &
;
echo 參數:,var_dump($_GET);

效果如下:


&


建議參考一下tp或者yii等開源框架url路由的寫法,總結出來自己的東西。


推薦閱讀:

為什麼面試時經常問到 PHP 設計模式?PHP 設計模式有什麼用?
Windows 下基於 IIS 伺服器的 PHP 環境怎麼搭建?
php如何進階?
如何利用PHP構建個人小型博客?

TAG:PHP | PHP開發 |