CodeIgniter中实现泛域名解析


Posted in PHP onJuly 19, 2014

最近遇到一个项目要求使用二级域名,以方便SEO,由于采用的是CodeIgniter框架,这个框架虽然提供了灵活的路由功能,但是不能实现二级域名。查询了多很资料之后,经过几番测试得出了解决方法。本例采用www.mysite.com这个假域名。

步骤1:

首先在httpd.conf中建立virtualhost

<VirtualHost *:80>
  ServerAdmin admin@163.com
  DocumentRoot "D:/www/cms"
  ServerName www.mysite.com
  ServerAlias *.mysite.com #这里采用泛解析的方式
  ErrorLog "logs/mysite.com-error.log"
  CustomLog "logs/mysite.com.log" common
</VirtualHost>

步骤2:

我要实现这样的效果:
http://www.mysite.com/category/news/1.html  =====>  http://category.mysite.com/news/1.html
为了确保能正常访问这个domain,必须修改hosts文件

127.0.0.1 www.mysite.com
127.0.0.1 category.mysite.com

步骤3:

修改:system/core/URI.php的_set_uri_string方法

/**
 * Set the URI String
 *
 * @access public
 * @param string
 * @return string
 */
function _set_uri_string($str)
{
 // Filter out control characters
 $str = remove_invisible_characters($str, FALSE);
 // If the URI contains only a slash we'll kill it
 $this->uri_string = ($str == '/') ? '' : $str;
 // Add by fengyun for url rewrite at 2013-1-25 1:02:27
 @include(APPPATH.'config/domain'.EXT);
 $arrServerName = explode('.', $_SERVER['SERVER_NAME']);
 if (in_array($arrServerName[0], $domain)) {
 $this->uri_string = '/' . $arrServerName[0]."/" . $this->uri_string;
 }
}

这里主要是为了让URL能正确的被CI理解。

步骤4:在application/config/下建立一个domain.php文件。内容如下:

<?php
if ( ! defined('BASEPATH'))
exit('No direct script access allowed');
$domain = array('category',"detail","info","archive");

至此已经基本完成了,不过,使用site_url()的时候,如果要使用二级域名,就得另做处理了。

PHP 相关文章推荐
php利用iframe实现无刷新文件上传功能的代码
Sep 29 PHP
深入php list()函数的详解
Jun 05 PHP
PHPer 需要了解的 5 个 Composer 小技巧
Aug 18 PHP
phpstorm配置Xdebug进行调试PHP教程
Dec 01 PHP
php单一接口的实现方法
Jun 20 PHP
php简单判断文本编码的方法
Jul 30 PHP
PHP控制前台弹出对话框的实现方法
Aug 21 PHP
详解PHP编码转换函数应用技巧
Oct 22 PHP
Laravel5.1 框架控制器基础用法实例分析
Jan 04 PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 PHP
php正则表达式使用方法整理集合
Jan 31 PHP
再谈Yii Framework框架中的事件event原理与应用
Apr 07 PHP
php实现建立多层级目录的方法
Jul 19 #PHP
PHP实现图片压缩的两则实例
Jul 19 #PHP
PHP简单实现“相关文章推荐”功能的方法
Jul 19 #PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
Jul 18 #PHP
CodeIgniter中使用cookie的三种方式详解
Jul 18 #PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
Jul 18 #PHP
简单实用的网站PHP缓存类实例
Jul 18 #PHP
You might like
php/js获取客户端mac地址的实现代码
2013/07/08 PHP
php 批量替换html标签的实例代码
2013/11/26 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
php解决DOM乱码的方法示例代码
2016/11/20 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
PHP copy函数使用案例代码解析
2020/09/01 PHP
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
jquerymobile局部渲染的各种刷新方法小结
2014/03/05 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
如何理解Vue的render函数的具体用法
2017/08/30 Javascript
javascript input输入框模糊提示功能的实现
2017/09/25 Javascript
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
JavaScript字符串转数字的5种方法及遇到的坑
2018/07/16 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
2019/12/01 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
Python中的装饰器用法详解
2015/01/14 Python
Python类的用法实例浅析
2015/05/27 Python
Python函数式编程指南(四):生成器详解
2015/06/24 Python
python抓取网页中图片并保存到本地
2015/12/01 Python
python字典改变value值方法总结
2019/06/21 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
英国领先的办公用品供应商:Viking
2016/08/01 全球购物
优秀士兵个人事迹材料
2014/01/19 职场文书
《草原》教学反思
2014/02/15 职场文书
给全校老师的建议书
2014/03/13 职场文书
年检委托书
2014/08/30 职场文书
出国签证在职证明范本
2014/11/24 职场文书
环卫个人总结
2015/03/03 职场文书
采购内勤岗位职责
2015/04/13 职场文书
导游词之上海豫园
2019/10/24 职场文书