1. 程式人生 > >thinkphp3.2.3中設定路由,優化url

thinkphp3.2.3中設定路由,優化url

需求: 訪問這個目錄的時候,http://xx.com/p-412313要重定向到(暫且這麼叫)http://xx.com/Home/Blog/index/id/412313

就是看著好看

我的應用目錄是Application。模組是Home

第一步:知道哪個檔案怎麼處理的路由
路由處理在think/Route.class.php

// 動態路由處理
        $routes =   C('URL_ROUTE_RULES');
        // var_dump($routes);

        if(!empty($routes)) {
            // dump($routes);
            //array(1) {
                // ["/^p-(\d+)$/"] => string(16) "Blog/index?id=:1"
            //}
            // echo "rount.class.php\n";
            foreach ($routes as $rule=>$route){
                if(is_numeric($rule)){
                    // 支援 array('rule','adddress',...) 定義路由
                    $rule   =   array_shift($route);
                }
     ...程式碼多,僅標識位置

第二步:在專案模組的配置檔案下,設定配置檔案 如下(因為tp是逐級載入配置檔案,慣例配置->應用配置->模式配


置->除錯配置->狀態配置->模組配置->擴充套件配置->動態配置,這裡屬於模組配置
<?php
return array(


    'MODULE_ALLOW_LIST' => array('Home','Admin','Common'),
     'DEFAULT_MODULE'       =>    'Home',  // 預設模組
     'DEFAULT_CONTROLLER'    =>  'Index', // 預設控制器名稱
     'DEFAULT_ACTION'        =>  'index', // 預設操作名稱
         //    路由規則
    'URL_ROUTER_ON' => TRUE,
    'URL_ROUTE_RULES' => array(
        '/^c-(\d+)$/' => 'Index/content?id=:1'
    ),
	 'URL_ROUTER_ON '=>true,
     'URL_MODEL'          => '1',

     'URL_ROUTE_RULES'=>array(   
       '/^p-(\d+)$/' => 'Home/Blog/index?id=:1',//意思是訪問x.com/p-34 會訪問的是x.com/Blog/index/id/34

         ),
);

第三部:
如果你沒有設定預設的模組 ,會出現找不到p-34這個模組的錯誤。
那麼需要在index.php中設定
define('BIND_MODULE','Home');

這樣就可以了。

說明:如果沒有第三步。預設開啟是正常的就是這樣。

但是


所以我們操作第三步,就可以實現如下效果了:


相關推薦

thinkphp3.2.3設定路由優化url

需求: 訪問這個目錄的時候,http://xx.com/p-412313要重定向到(暫且這麼叫)http://xx.com/Home/Blog/index/id/412313 就是看著好看 我的應用目錄是Application。模組是Home 第一步:知道哪個檔案怎麼處理

ThinkPHP3.2.3URL帶引數跳轉

ThinkPHP框架針對前端頁面跳轉,給出了一種路由方法,通過{:U('模組/控制器/方法')}來跳轉到對應的頁面中,當這種方法在帶有引數並在JS中使用的時候這裡給出兩種方式,比如說,當控制器為inde

使用ThinkPhp3.2.3 的S函式鍵不能是小駝峰形式會返回false

public function getAccessToken() { $res = S('yZAccessToken'); if ($res) {//這邊都是false echo 1;//一直都是不會

thinkphp3.2.3Class '?' not found的原因以及解決方法

【來源地址】:自己的個人php論壇   php自學者論壇 【原因】:違反thinkphp的命名規範 例如你的模組名為Home                    --Home --Controller TestController.class.php      (*如

thinkphp3.2 home為預設模組url裡面隱藏掉home

今天公司新來的小夥伴問我怎麼把thinkphp的home 隱藏掉,就直接貼出來了,剛入行的小夥伴可以看一下 解決方法: 在Common/Conf/config.php和Home/Conf/confi

ThinkPHP3.2.3框架模板檔案匯入cssjs檔案相關問題

解決辦法: (1) 可以用原來的方式引進js,css檔案,但是其預設位置是在與專案app資料夾同級目錄的Public資料夾(需要自己建立)下面 (2)使用import標籤,如: <import type='js' file="Js.Util.Array" basepa

ThinkPHP3.2.3---ajaxreturn的應用:一個在搜尋框輸入實時動態顯示模糊搜尋結果

實現目標   在一個文字框中輸入關鍵詞,利用ajax和ajaxreturn實時顯示模糊搜尋的json資料。當然獲得了json資料,後期處理資料就隨你怎麼弄了。 最終實現效果 無任何動作

Thinkphp3.2.3框架下封裝公共的函數例如封裝CURL函數來獲取接口數據

快捷 我們 很好 cti lda esp 多次 pic 擴展 當我們需要在控制層調用相同的封裝函數時,寫多次相同的函數,顯得代碼十分的拉雜,不精簡; TP框架有一個很好的機制,可以再Common定義一個function.php函數,當我們在控制層調用的時候直接調用就可以

thinkphp3.2.3 定時任務重新加載 無法加載新的定時任務的問題

info 2.3 圖片 gin 問題 源碼 3.2 png thinkphp thinkphp3.2.3 的定時任務有個坑,一旦你改名定時任何或者路徑,新的定時任務將無法加載,無論你重啟php還是重啟nginx,甚至重啟服務器,都不行。 原因是你要刪掉一個類似lock文

2018年10月8日django檢視版本命令python2&3print區別iterable報錯SSH,pycharm/ubuntu顏色設定

檢視Django版本的命令: 1. 在終端中輸入: python -m django –-version 2. 進入python互動環境:        import django    &nb

Thinkphp3.2.3 多圖上傳同類型只能上傳一張問題

Thinkphp3.2.3 多圖上傳,同類型只能上傳一張問題, 例如一次性上傳多張 .jpg 檔案,只能上傳最後一張, 問題在於,同名,只儲存一張,找了很多方法,問題就在於 saveName 上 在 App->Common->Common->function.php 下

ThinkPHP3.2.3:空模組、空控制器、空操作跳轉到錯誤404頁面

【演示準備】     首先下載了一個ThinkPHP3.2.3,目錄結構如下:(只有Home模組、Index控制器、index操作方法)     然後找了一個簡易的錯誤404頁面404.html放到了根目錄: 【空模組】 訪問一個不存在的模組Admin,錯誤提

CF D - Beautiful Graph(dfs 染色問題吧)給你一個圖每個節點可以賦值1,2,3三種數字相鄰的節點的和必須是奇數問有多少方法。

題意: 給你一個圖,每個節點可以賦值1,2,3三種數字,相鄰的節點的和必須是奇數,問有多少中方法。 分析: 很容易就可以發現如果這個圖中是有奇數的環的話,那這是肯定不行的 ,否則這個環的貢獻是為2^sumji+2^sumou , 總貢獻為每個的環的貢獻相乘,一個點也為環; #in

關於Thinkphp3.2.3路由使用

一、關於路由 根據Thinkphp的開發手冊,要使用路由功能,前提是你的URL支援PATH_INFO(或者相容URL模式也可以,採用普通URL模式的情況下不支援路由功能),那麼,什麼是pathinfo模式? pathinfo 模式是index.php/ind

thinkphp3.2.3之apache轉nginx偽靜態設定

本地開發的專案,使用的是apache伺服器,完成專案之後,之前搭建到的伺服器都是Windows伺服器上,從而上線,這次需要在寶塔上nginx伺服器上搭建,所以需要將apache的偽靜態更改為nginx:1.在網上搜索到的基本上都不是自己理想狀態下的需求,搜尋到的方法基本上與比

ThinkPHP3.2.3優化跳轉頁面

最近總是用ThinkPHP3.2.3版本做專案,做著做著便感覺原有的跳轉頁面是真的醜,所以到百度上瞅瞅,瞅到了一個挺美觀的頁面,借鑑一下:借鑑地址:<?php if(C('LAYOUT_ON')) { echo '{__NOLAYOUT_

ThinkPHP3.2.3將session放置到指定資料夾

核心程式碼是這行 //設定session 儲存資料夾等資訊 session(array('name'=>'session_www','expire'=>3600,'path'=>'/data/www/xxoo.com/Data/Runtime/Sessio

Thinkphp3.2.3設定session週期無效的問題

thinkphp的session設定週期是無效的,直接的影響就是無法保留使用者的登陸狀態,用thinkphp開發的專案,關閉瀏覽器後用戶就退出了,即便設定了session週期也沒作用。 首先需要在 /Thinkphp/Common/funtion.php 公告函式中找到如

記在vue-cli 2.0使用typescript從webpack ^3.0到^4.0的自殺式升級。

       最近抽了點時間弄了一下vue的服務端渲染(SSR)以及serviceWork和application的離線快取技術(PWA),於是就拿了以前的老專案去重寫了,但是老的有點落伍了是基於vue-cli 2.0的,完全就是在webpack的基礎上加

3設定squid公網訪問區域網的Docker

問題: Linux宿主機的IP:10.10.1.12 (可以訪問公網) Docker的IP:172.17.1.2 (執行在Linux宿主機上10.10.1.12 ) 其他可以訪問公網的機器(如Wind