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随机输出名人名言的代码
Oct 07 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
Dec 10 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
May 13 PHP
dedecms中使用php语句指南
Nov 13 PHP
非常重要的php正则表达式详解
Jan 04 PHP
PHP创建word文档的方法(平台无关)
Mar 29 PHP
php微信支付接口开发程序
Aug 02 PHP
PHP针对多用户实现更换头像功能
Sep 04 PHP
使用WAMP搭建PHP本地开发环境
May 10 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
Laravel 队列使用的实现
Jan 08 PHP
laravel框架查询数据集转为数组的两种方法
Oct 10 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产生随机字符串函数
2006/12/06 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
php 数组元素快速去重
2017/05/05 PHP
php微信开发之关注事件
2018/06/14 PHP
javascript 设置某DIV区域内的checkbox复选框
2009/11/30 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
js 获取今天以及过去日期
2017/04/11 Javascript
Form表单上传文件(type=&quot;file&quot;)的使用
2017/08/03 Javascript
微信小程序 swiper组件构建轮播图的实例
2017/09/20 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
2019/09/02 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
python实现每次处理一个字符的三种方法
2014/10/09 Python
python删除特定文件的方法
2015/07/30 Python
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
python字符串的方法与操作大全
2018/01/30 Python
python 美化输出信息的实例
2018/10/15 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
Otticanet澳大利亚:最顶尖的世界名牌眼镜, 能得到打折季的价格
2018/08/23 全球购物
Myprotein比利时官方网站:欧洲第一运动营养品牌
2020/10/04 全球购物
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
恒华伟业笔试面试题
2015/02/26 面试题
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
质检员的岗位职责
2013/11/15 职场文书
乡镇四风对照检查材料
2014/08/31 职场文书
综合素质评价个性发展自我评价
2015/03/06 职场文书
实习单位鉴定意见
2015/06/04 职场文书
2019年健身俱乐部的创业计划书
2019/08/26 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript