如何寫一個 PHP URL 路由?
01-30
怎麼用 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=值Nhttp://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構建個人小型博客?
