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 捂脸哭(┬_┬)
还是自己对框架不熟悉,需要在以后的需求中不断的实践,如果不是闲来无事重新配置这个,我还真不知道这个路由配置。
最后一点,抱着大腿,才能更快,更快乐的成长。手动开心♪(^∀^●)ノ 大腿人特别好,性格脾气都好,以后有能力了就去找大腿,还是跟着大腿混,嘿嘿嘿......
phpcms 路由配置的更多相关文章
- .NetCore MVC中的路由(1)路由配置基础
.NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...
- ASP.NET WebForms MapPageRoute 路由配置
MapPageRoute 应该是 ASP.NET 4.0 中的东西,但现在我是第一次使用它,使用场景是:MVC 混合使用 WebForm,然后对 WebForm 进行路由配置,当然也可以使用 ISAP ...
- MVC路由配置
目录 URL Routing 的定义方式 示例准备 给片段变量定义默认值 定义静态片段 自定义片段变量 自定义片段变量的定义和取值 将自定义片段变量作为Action方法的参数 指定自定义片段变量为可选 ...
- ui-router带参数的路由配置
ui-router带参数的路由配置 使用ng-route的时候带参数的连接这样配置: $routeProvider.when('item/itemid/:itemid', { templateUrl: ...
- [水煮 ASP.NET Web API2 方法论](3-8)怎样给指定路由配置处理器
阅读导航 问题 解决方案 工作原理 代码演示 问题 如果仅仅针对指定的路由进行某些特定的消息处理,而不是应用于所有路由,我们应该怎么做呢? 解决方案 ASP.NET WEB API 的很多功能都内建了 ...
- Linux和Windows路由配置
Linux和Windows路由配置 一.配置路由 1- 原则上一台主机只能有一条缺省路由.如果一台主机上有多个网段的话,请配置能够上网的那个网段的网关为缺省路由 Linux配置缺省路由: ...
- WebForm MapPageRoute 路由配置(转载)
使用场景是:MVC 混合使用 WebForm,然后对 WebForm 进行路由配置 http://www.cnblogs.com/xishuai/archive/2015/02/26/web-form ...
- cisco 路由配置
Cisco路由配置基础 刚刚接触cisco路由配置,下面是学习的笔记,感觉命令还是多敲才能熟悉 一. 所处状态各类 router> 用户处于用户命令状态,可以查看网络和主机 router# 用户 ...
- Cisco模拟器使用和静态路由配置
一. 模拟器使用 网络拓扑图 1. 模拟器搭建环境及网络结构 2. 使用ios系统加载并配置 3. 加载3745ios后计算pc值以减小cpu的消耗 4. 然后使用CTRL+]+i得到最大的一个值(如 ...
随机推荐
- flutter stack
import 'package:flutter/material.dart'; void main() { runApp(MaterialApp(home: new MyApp())); } clas ...
- 01:云计算三种服务模式SaaS、PaaS和IaaS
1.1 云计算 1.什么是云计算 1. 云计算服务是指将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务. 2. 用户通过网络以按需.易扩展的方式获得所需资源和服务(资源包括网 ...
- docker之Dockerfile实践
上一篇介绍了Dockerfile中使用的指令,现在开始进行指令实践 先查看下本地的镜像,选一个作为base image: [root@docker ~]# docker images REPOSITO ...
- luogu[愚人节题目3]现代妖怪殖民地 NTT
U34272 [愚人节题目3]现代妖怪殖民地 fft 题目链接 https://www.luogu.org/problemnew/show/U34272 思路 虽然是个py题. ntt(或者fft)模 ...
- 代码覆盖率-JaCoCo
代码覆盖率 在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%. JaCoCo Jacoco从多种角度对代码 ...
- Kotlin 条件控制
IF 表达式 一个 if 语句包含一个布尔表达式和一条或多条语句. // 传统用法 var max = a if (a < b) max = b // 使用 else var max: Int ...
- git在本地回退
参考https://www.cnblogs.com/qufanblog/p/7606105.html 已经用 git commit 提交了代码. 可以使用 git reset --hard HEAD ...
- Vue.js 基本功能了解一下~
一.写在前面 隔了这么久才来出Vue的第二篇文章,真是堕落了,自己先惩罚下/(ㄒoㄒ)/~~ 回过头看自己第一篇相关文章<初试 Vue.js>(http://www.cnblogs.com ...
- python报错函数传参数传多了
写python的时候报错: Exception : Traceback (most recent call last): File , in __bootstrap_inner self.run() ...
- echarts和highcharts比较
echarts底层为canvas,highcharts底层为svg canvas特点: ①依赖分辨率 ②不支持事件处理器 ③弱的文本渲染能力 ④能够以.jpg..png格式保存结果图像 ⑤最适合图像密 ...