phpcms 路由配置


這是一個由apache多站點配置引發的"血案",本以為是本地多站點配置的問題,結果找了半天沒找到相關配置,最后還是問的大腿,同時也了解一些關於c盤hosts文件的映射作用以及使用 ip訪問 在多域名的情況下,會訪問首先生效的域名。

主要的還是路由設置,說一下我發現這個問題的過程。

項目是phpcms的,有手機站和pc站,還有ecmall,因為域名不同,所以要配置本極apache服務器多站點,打開各自的主頁。

修改本機hosts文件,修改apapche 服務器 httpd, httpd-vhosts文件 ,在httpd-vhosts里添加了相應站點的訪問路徑。

然后重啟apache 。因為pc站的域名配置了相應的訪問路徑,沒有問題,正常顯示,但是手機站在httpd-vhosts里沒有配置訪問路徑,也可以正常訪問,當時我就震驚了。

效果是這樣的:

hosts文件:

httpd-vhosts文件:

訪問路徑只配置了www.cms.localhost ,並沒有配置wap.cms.localhost 為什么他還能正常訪問到手機站呢? 我以為漏掉了什么,就百度啊百度啊,找配置啊找配置(整個過程很艱辛)然后還是沒有發現原因,接着就去抱大腿了,害羞(✿◡‿◡)。

大腿告訴我 如下內容:

1.hosts:   hosts只負責映射,映射成功即可訪問,並不驗證被映射地址的真假。

2.使用IP訪問,多域名情況下,會訪問首先生效的域名。

然后我百度了一下,了解了hosts,然后問大腿,我用的域名訪問,經過hosts 會被解析成127.0.0.1 ,在多域名的情況下,不應該訪問 我在apache多站點配置文件httpd-vhosts里配置的第一個域名對應的路徑嗎,大腿說是的。但是實際上是訪問的手機站,然后重點來了:大腿說看看route.php 也就是phpcms的caches/configs/route.php  這個是phpcms 的路由配置默認訪問路徑文件。

在這里面

返回的數組中有了如上配置。然后在phpcms/libs/classes中的param.calss.php 這個類中進行了路由的參數處理:

 

    //路由配置
    private $route_config = '';
    
    public function __construct() {
        if(!get_magic_quotes_gpc()) {
            $_POST = new_addslashes($_POST);
            $_GET = new_addslashes($_GET);
            $_REQUEST = new_addslashes($_REQUEST);
            $_COOKIE = new_addslashes($_COOKIE);
        }
      // 載入route.php中的配置信息, 通過當前地址欄的url進行對比,然后進行一系列處理,最終 $_GET 中包含了當前地址欄里的url對應的訪問路徑。
      // 這里的SITE_URL 就是你在地址欄里輸入的url $this->route_config = pc_base::load_config('route', SITE_URL) ? pc_base::load_config('route', SITE_URL) : pc_base::load_config('route', 'default');      // var_dump($this->route_config); //結果是route.php里相關的數組元素
if(isset($this->route_config['data']['POST']) && is_array($this->route_config['data']['POST'])) { foreach($this->route_config['data']['POST'] as $_key => $_value) { if(!isset($_POST[$_key])) $_POST[$_key] = $_value; } } if(isset($this->route_config['data']['GET']) && is_array($this->route_config['data']['GET'])) { foreach($this->route_config['data']['GET'] as $_key => $_value) { if(!isset($_GET[$_key])) $_GET[$_key] = $_value; } } if(isset($_GET['page'])) { $_GET['page'] = max(intval($_GET['page']),1); $_GET['page'] = min($_GET['page'],1000000000); }
 // var_dump($_GET);exit; 這里打印出的結果就是要前往的url路徑
return true; }

 

 

 

至於后來怎么跳轉的,就沒有再看,然后自己添加了一個mob.cms.localhost也可以正常訪問手機站,到這里為什沒回找到手機站的問題就解決了。

總結了一下:並不是所有的問題都出在自己的設置上,有時候應該自信一點,當初我怎么就沒有在整個項目里直接搜 wap.cms.localhost呢 我竟然搜索的http://wap.cms.localhost  捂臉哭(┬_┬)

 還是自己對框架不熟悉,需要在以后的需求中不斷的實踐,如果不是閑來無事重新配置這個,我還真不知道這個路由配置。

最后一點,抱着大腿,才能更快,更快樂的成長。手動開心♪(^∀^●)ノ   大腿人特別好,性格脾氣都好,以后有能力了就去找大腿,還是跟着大腿混,嘿嘿嘿......

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM