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 相关文章推荐
推荐文章系统(一)
Oct 09 PHP
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
Dec 06 PHP
PHP中读取照片exif信息的方法
Aug 20 PHP
php删除左端与右端空格的方法
Nov 29 PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 PHP
PHP递归创建多级目录
Nov 05 PHP
2款PHP无限级分类实例代码
Nov 11 PHP
PHP使用token防止表单重复提交的方法
Apr 07 PHP
Yii统计不同类型邮箱数量的方法
Oct 18 PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 PHP
php 处理png图片白色背景色改为透明色的实例代码
Dec 10 PHP
掌握PHP垃圾回收机制详解
Mar 13 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
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
深入理解PHP中的count函数
2016/05/31 PHP
php出租房数据管理及搜索页面
2017/05/23 PHP
PHP实现的函数重载功能示例
2018/08/03 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
2019/04/10 PHP
PHP大文件分割分片上传实现代码
2020/12/09 PHP
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
2016/06/09 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
判断数组的最佳方法(推荐)
2016/10/11 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
详解vue-router传参的两种方式
2018/09/10 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
python使用cPickle模块序列化实例
2014/09/25 Python
Django 添加静态文件的两种实现方法(必看篇)
2017/07/14 Python
python实现报表自动化详解
2017/11/16 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
通过HTML5 Canvas API绘制弧线和圆形的教程
2016/03/14 HTML / CSS
彪马土耳其官网:PUMA土耳其
2019/07/14 全球购物
欧洲最大的高尔夫零售商:American Golf
2019/09/02 全球购物
网络维护中文求职信
2014/01/03 职场文书
数控专业自荐书范文
2014/03/16 职场文书
优秀管理者事迹材料
2014/05/22 职场文书
团员自我评价范文
2015/03/10 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
转变工作作风心得体会
2016/01/23 职场文书
《确定位置》教学反思
2016/02/18 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书