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 相关文章推荐
session 的生命周期是多长
Oct 09 PHP
php FLEA中二叉树数组的遍历输出
Sep 26 PHP
PHP 实现代码复用的一个方法 traits新特性
Feb 22 PHP
PHP中文乱码解决方案
Mar 05 PHP
如何在HTML 中嵌入 PHP 代码
May 13 PHP
PHP5.3新特性小结
Feb 14 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
Oct 08 PHP
PHP获取当前系统时间的方法小结
Oct 03 PHP
Laravel框架实现定时Task Scheduling例子
Oct 22 PHP
Laravel框架下载,安装及路由操作图文详解
Dec 04 PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 PHP
PHP中echo与print区别点整理
Mar 09 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
利用phpexcel把excel导入数据库和数据库导出excel实现
2014/01/09 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
yii2实现 &quot;上一篇,下一篇&quot; 功能的代码实例
2017/02/04 PHP
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
jquery入门—选择器实现隔行变色实例代码
2013/01/04 Javascript
node.js中的fs.rmdir方法使用说明
2014/12/16 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
使用JSON作为函数的参数的优缺点
2016/10/27 Javascript
js中常用的Math方法总结
2017/01/12 Javascript
javascript实现小型区块链功能
2019/04/03 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
Vue实现剪贴板复制功能
2019/12/31 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
Python快速排序算法实例分析
2017/11/29 Python
python语言中with as的用法使用详解
2018/02/23 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
python 进制转换 int、bin、oct、hex的原理
2021/01/13 Python
matplotlib grid()设置网格线外观的实现
2021/02/22 Python
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
财会自我鉴定范文
2013/12/27 职场文书
广告业务员岗位职责
2014/02/06 职场文书
开学典礼主持词
2014/03/19 职场文书
初中英语课后反思
2014/04/25 职场文书
美容院合作经营协议书
2014/10/10 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
Python如何配置环境变量详解
2021/05/18 Python
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技