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+javascript模拟Matrix画面
Oct 09 PHP
php读取数据库信息的几种方法
May 24 PHP
PHP中计算字符串相似度的函数代码
Dec 29 PHP
ThinkPHP CURD方法之data方法详解
Jun 18 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
ThinkPHP中的常用查询语言汇总
Aug 22 PHP
PHP大转盘中奖概率算法实例
Oct 21 PHP
php+mysql查询优化简单实例
Jan 13 PHP
php实现网站留言板功能
Nov 04 PHP
yii使用bootstrap分页样式的实例
Jan 17 PHP
详解php与ethereum客户端交互
Apr 28 PHP
php封装实现钉钉机器人报警接口的示例代码
Aug 08 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上传文件中文文件名乱码的解决方法
2013/11/01 PHP
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2011/09/13 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
jquery中checkbox使用方法简单实例演示
2015/11/24 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
详解Angular操作cookies方法
2018/06/01 Javascript
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
js实现秒表计时器
2019/12/16 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python匹配中文的正则表达式
2016/05/11 Python
python append、extend与insert的区别
2016/10/13 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
vscode写python时的代码错误提醒和自动格式化的方法
2020/05/07 Python
Python reduce函数作用及实例解析
2020/05/08 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
全球最大的服务市场:Fiverr
2017/01/03 全球购物
vue项目实现分页效果
2021/03/24 Vue.js
个人委托书
2014/07/31 职场文书
2014年度考核工作总结
2014/12/24 职场文书
煤矿安全保证书
2015/02/27 职场文书
工会经费申请报告
2015/05/15 职场文书
创业计划书之网络外卖
2019/10/31 职场文书
redis 查看所有的key方式
2021/05/07 Redis
详解Python requests模块
2021/06/21 Python
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技