国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

構建PHP MVC框架1.URL路由配置

2020-03-22 19:14:30
字體:
來源:轉載
供稿:網友
  • 可以說一個漂亮的URL對于一個MVC框架而言不是必須的。
    你可以run你自己的framework,然后,在URL后邊自己添加自己的參數,比如:index.php?c=a&m=b等等。
    不過這種URL對于瀏覽器而言,看起來不太友好,對于搜索引擎而言也不是太過友好,對于SEO還會有一定的影響。

    所以,最好你的MVC框架是一個單入口程序,所謂的單入口程序就是所有的請求都會通過一定的規則,然后有一定的bootstrap引導,這樣我們就可以在bootstrap中加入一些擴展點。當然,可以明白的說,擴展點不是給我們用的,是給一些對于我們的框架不是很滿意,然后想加入一些改造的人來用的,這樣就加強了MVC框架的靈活性。

    OK,步入正題:

    搜索引擎比較喜歡的URL方式是域名直接跟斜線,然后隔離各種參數,比如上邊我們用GET方式傳遞的c和m等。就是類似http://a.com/index/hello這種方式。這種方式要想變成我們需要的形式就需要借助于web服務器的一種工具來重寫URL。作者用的服務器是apache,apache里邊的這個模塊叫做rewrite。開啟rewrite,這部分屬于apache服務器配置的問題,在此不做描述。

    這里主要介紹簡單的URL規則。rewrite模塊是利用正則的方式來匹配瀏覽到的URL然后,可以把匹配到的部分重新拼接成一個新的URL。

    框架的URL,rewrite規則定義如下:


    <IfModule mod_rewrite.c> RewriteEngine On   #路由規則,除了*.php html' target='_blank'>static robots.txt 以外的所有請求 RewriteCond $1 !^([a-z]+.php|static|robots.txt|uploads|unionhotel)   #路由默認的首頁 RewriteRule ^()?$ index.php?%{QUERY_STRING} [L]   #路由某些特殊的規則,這里是以beta開頭的規則 RewriteRule ^(beta)/(.+)?$ $1.php/$2?%{QUERY_STRING} [L]   #路由其余的請求 RewriteCond $1 !^([a-z]+.php|static|robots.txt|uploads|betasns|unionhotel) RewriteRule ^([a-z]+)/(.+)?$ index.php/$1/$2?%{QUERY_STRING} [L] RewriteRule ^([a-z]+)?$ index.php/$1?%{QUERY_STRING} [L]   </IfModule>

    把這個文件保存為.htaccess然后,注意開啟你的apache的rewrite模塊,然后允許在htaccess中設置,就可以生效了。

    當你訪問localhost/a/b的時候就會被改寫為localhost/index.php/a/b
    然后我們就可以在index.php中做文章了,其中可以獲取到a/b然后定義路由規則。

    域名后邊的URL字段可以通過$_SERVER['path'] 來獲得,一個簡單的入口文件定義如下:

     

    //定義默認調用index控制器的index方法 $controller_name = 'index'; $method_name = 'index';   //定義路由函數,第一部分作為控制器的名字,第二部分作為控制器的方法 function route_request(){     global $controller_name,$method_name;     $uri = $_SERVER['PATH_INFO'];     $uri = trim($uri,'/');     $uri_arr = explode('/',$uri);     if(count($uri_arr) >= 2 ) {        $controller_name = $uri_arr[0];        $method_name = $uri_arr[1];     }     return; } route_request();

    保存以上文件為index.php
    然后附加上我們的測試打印代碼:


    var_dump($controller_name,$method_name); 

    這樣我們訪問當前目錄localhost/a/b
    將會看到我們解析出的控制器名,方法名

    PHP編程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 罗甸县| 九龙坡区| 罗山县| 刚察县| 龙州县| 永丰县| 和静县| 鄂尔多斯市| 天全县| 保山市| 武穴市| 陈巴尔虎旗| 缙云县| 读书| 临湘市| 综艺| 平谷区| 商城县| 佛山市| 岳普湖县| 东至县| 博野县| 彭阳县| 桃江县| 滨海县| 兴国县| 敖汉旗| 连平县| 延津县| 朝阳县| 南涧| 将乐县| 韶关市| 米易县| 屏东县| 新丰县| 焉耆| 武邑县| 通榆县| 尤溪县| 绥阳县|