zoukankan      html  css  js  c++  java
  • 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  捂脸哭(┬_┬)

     还是自己对框架不熟悉,需要在以后的需求中不断的实践,如果不是闲来无事重新配置这个,我还真不知道这个路由配置。

    最后一点,抱着大腿,才能更快,更快乐的成长。手动开心♪(^∀^●)ノ   大腿人特别好,性格脾气都好,以后有能力了就去找大腿,还是跟着大腿混,嘿嘿嘿......

  • 相关阅读:
    MySQL用户管理
    MySQL慢查询日志总结
    linux rinetd 端口转发部署
    CentOS6.8下安装MySQL5.6
    ELK filter过滤器来收集Nginx日志
    ELK+Redis 解析Nginx日志
    为什么很多IT公司不喜欢进过培训机构的人呢?
    Django之virtualenv下安装xadmin
    Django开发问题及解决方法汇总
    解决Pycharm添加虚拟解释器的报错问题
  • 原文地址:https://www.cnblogs.com/benpaodelulu/p/7235182.html
Copyright © 2011-2022 走看看