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中file_exists与is_file,is_dir的区别介绍
Sep 12 PHP
PHP数据流应用的一个简单实例
Sep 14 PHP
PHP register_shutdown_function函数的深入解析
Jun 03 PHP
php使用百度天气接口示例
Apr 22 PHP
文件上传之SWFUpload插件(代码)
Jul 30 PHP
php正则表达式学习笔记
Nov 13 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
Dec 18 PHP
Docker 如何布置PHP开发环境
Jun 21 PHP
PHP读取zip文件的方法示例
Nov 17 PHP
php UNIX时间戳用法详解
Feb 16 PHP
PHP 断点续传实例详解
Nov 11 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
Apr 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
php5 mysql分页实例代码
2008/04/10 PHP
php pack与unpack 摸板字符字符含义
2009/10/29 PHP
phpstorm配置Xdebug进行调试PHP教程
2014/12/01 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
更正确的asp冒泡排序
2007/05/24 Javascript
List Installed Hot Fixes
2007/06/12 Javascript
jquery validate.js表单验证的基本用法入门
2010/05/13 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
浅析Javascript中bind()方法的使用与实现
2016/05/30 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
简单的渐变轮播插件
2017/01/12 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
vue axios 二次封装的示例代码
2017/12/08 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
2018/08/02 Javascript
简单实现节流函数和防抖函数过程解析
2019/10/08 Javascript
JavaScript中遍历的十种方法总结
2020/12/15 Javascript
python绘制多个曲线的折线图
2020/03/23 Python
使用Python实现微信提醒备忘录功能
2018/12/04 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
车工岗位职责
2013/11/26 职场文书
《鱼游到了纸上》教学反思
2014/02/20 职场文书
实习指导老师评语
2014/04/26 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
教师先进个人材料
2014/12/17 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers