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 相关文章推荐
COM in PHP (winows only)
Oct 09 PHP
PHP 文件类型判断代码
Mar 13 PHP
php将fileterms函数返回的结果变成可读的形式
Apr 21 PHP
php中计算程序运行时间的类代码
Nov 03 PHP
php中把美国时间转为北京时间的自定义函数分享
Jul 28 PHP
浅谈json_encode用法
Mar 05 PHP
php在apache环境下实现gzip配置方法
Apr 02 PHP
php PDO异常处理详解
Nov 20 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
Apr 19 PHP
PHP文件操作实例总结【文件上传、下载、分页】
Dec 08 PHP
php输出形式实例整理
May 05 PHP
php7 新增功能实例总结
May 25 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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
php 向访客和爬虫显示不同的内容
2009/11/09 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
2011/04/07 PHP
javascript 解析后的xml对象的读取方法细解
2009/07/25 Javascript
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
基于Jquery的淡入淡出的特效基础练习
2010/12/13 Javascript
解决JS浮点数运算出现Bug的方法
2013/03/12 Javascript
jQuery中each()方法用法实例
2014/12/27 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
jQuery EasyUi实战教程之布局篇
2016/01/26 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
2017/12/05 jQuery
vue2.0.js的多级联动选择器实现方法
2018/02/09 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
Laravel admin实现消息提醒、播放音频功能
2019/07/10 Javascript
python strip()函数 介绍
2013/05/24 Python
Python的subprocess模块总结
2014/11/07 Python
Python创建模块及模块导入的方法
2015/05/27 Python
解决Python一行输出不显示的问题
2018/12/03 Python
Pyqt5实现英文学习词典
2019/06/24 Python
PyTorch的自适应池化Adaptive Pooling实例
2020/01/03 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
高中毕业生生活的自我评价
2013/12/08 职场文书
班级道德讲堂实施方案
2014/02/24 职场文书
留学顾问岗位职责
2014/04/14 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
2014年教学工作总结
2014/11/13 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
民事起诉状范文
2015/05/19 职场文书
2019个人工作自我评价范文(3篇)
2019/09/19 职场文书