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中用PDO查询Mysql来避免SQL注入风险的方法
Apr 25 PHP
PHP无法访问远程mysql的问题分析及解决
May 16 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
Feb 18 PHP
php查看当前Session的ID实例
Mar 16 PHP
php实现用于验证所有类型的信用卡类
Mar 24 PHP
作为程序员必知的16个最佳PHP库
Dec 09 PHP
调试WordPress中定时任务的相关PHP脚本示例
Dec 10 PHP
Yii列表定义与使用分页方法小结(3种方法)
Jul 15 PHP
微信接口生成带参数的二维码
Jul 31 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 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
实用函数8
2007/11/08 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
WordPress中获取指定分类及其子分类下的文章数目
2015/12/31 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
js设置function参数默认值(适合没有传参情况)
2014/02/24 Javascript
用JavaScript实现类似于ListBox功能示例代码
2014/03/09 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
jQuery简单实现禁用右键菜单
2015/03/10 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
2016/06/12 Javascript
BootStrap 智能表单实战系列(五) 表单依赖插件处理
2016/06/13 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
Vue2实现组件props双向绑定
2016/12/02 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
vue 使用eventBus实现同级组件的通讯
2018/03/02 Javascript
Vue this.$router.push(参数)实现页面跳转操作
2020/09/09 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
Python 基础知识之字符串处理
2017/01/06 Python
Flask-Mail用法实例分析
2018/07/21 Python
Python中的Numpy矩阵操作
2018/08/12 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
python字符串常用方法及文件简单读写的操作方法
2020/03/04 Python
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
编程输出如下图形
2013/11/24 面试题
我有一个梦想演讲稿
2014/05/05 职场文书
酒店节能降耗方案
2014/05/08 职场文书
优秀护士事迹材料
2014/12/25 职场文书
计算机专业自荐信
2015/03/05 职场文书
海洋天堂观后感
2015/06/05 职场文书
MySQL普通表如何转换成分区表
2022/05/30 MySQL