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 相关文章推荐
封装一个PDO数据库操作类代码
Sep 09 PHP
用php实现让页面只能被百度gogole蜘蛛访问的方法
Dec 29 PHP
JS中encodeURIComponent函数用php解码的代码
Mar 01 PHP
PHP实现下载功能的代码
Sep 29 PHP
盘点PHP和ASP.NET的10大对比!
Dec 24 PHP
php实现异步数据调用的方法
Dec 24 PHP
php时间计算相关问题小结
May 09 PHP
thinkphp分页实现效果
Oct 13 PHP
PHP图片水印类的封装
Jul 06 PHP
PHP上传文件及图片到七牛的方法
Jul 25 PHP
laravel 字段格式化 modle 字段类型转换方法
Sep 30 PHP
PHP实现页面静态化深入讲解
Mar 04 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
一个取得文件扩展名的函数
2006/10/09 PHP
PHP5中新增stdClass 内部保留类
2011/06/13 PHP
PHP笔记之:基于面向对象设计的详解
2013/05/14 PHP
php数组合并array_merge()函数使用注意事项
2014/06/19 PHP
JavaScript Event学习第三章 早期的事件处理程序
2010/02/07 Javascript
jquery中实现标签切换效果的代码
2011/03/01 Javascript
Javascript检查图片大小不要让大图片撑破页面
2014/11/04 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
js读取并解析JSON类型数据的方法
2015/11/14 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
浅谈JQ中mouseover和mouseenter的区别
2016/09/13 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
Chrome调试折腾记之JS断点调试技巧
2017/09/11 Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
2018/05/22 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
jQuery实现简单弹幕效果
2019/11/28 jQuery
d3.js实现图形缩放平移
2019/12/19 Javascript
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
Python语言的变量认识及操作方法
2018/02/11 Python
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
python关于矩阵重复赋值覆盖问题的解决方法
2019/07/19 Python
深入了解python中元类的相关知识
2019/08/29 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
Python自省及反射原理实例详解
2020/07/06 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
高中毕业自我鉴定
2013/12/16 职场文书
企业消防安全制度
2014/02/02 职场文书
医院总经理岗位职责
2014/02/04 职场文书
语文复习计划
2015/01/19 职场文书