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作为Shell脚本语言使用
Oct 09 PHP
php mssql 时间格式问题
Jan 13 PHP
用php实现的获取网页中的图片并保存到本地的代码
Jan 05 PHP
PHP 模拟$_PUT实现代码
Mar 15 PHP
PHP中strtotime函数使用方法分享
Jan 10 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
Feb 16 PHP
CodeIgniter生成网站sitemap地图的方法
Nov 13 PHP
ThinkPHP 404页面的设置方法
Jan 14 PHP
PHP中返回引用类型的方法
Apr 03 PHP
PHP实现简单的新闻发布系统实例
Jul 28 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
Aug 07 PHP
php删除二维数组中的重复值方法
Mar 12 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+mysql数据库实现无限分类的方法
2014/12/12 PHP
PHP编程计算文件或数组中单词出现频率的方法
2017/05/22 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
2010/01/22 Javascript
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
javascript延时加载之defer测试
2012/12/28 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
Jquery通过JSON字符串创建JSON对象
2014/08/24 Javascript
jQuery on()方法使用技巧详解
2015/04/16 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
2016/01/27 Javascript
js验证框架实现代码分享
2016/05/18 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
2016/07/25 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
nodejs制作小爬虫功能示例
2020/02/24 NodeJs
python pickle 和 shelve模块的用法
2013/09/16 Python
Python实现竖排打印传单手机号码易撕条
2015/03/16 Python
Python yield与实现方法代码分析
2018/02/06 Python
浅谈Pandas中map, applymap and apply的区别
2018/04/10 Python
pytorch使用Variable实现线性回归
2019/05/21 Python
pytorch numpy list类型之间的相互转换实例
2019/08/18 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
为什么说python适合写爬虫
2020/06/11 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
Linden Leaves官网:新西兰纯净护肤品
2020/12/20 全球购物
外贸员简历中的自我评价
2014/03/04 职场文书
党员个人剖析材料
2014/09/30 职场文书
见习报告格式要求
2014/11/04 职场文书
会计人员岗位职责
2015/02/03 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
幼儿园保育员随笔
2015/08/14 职场文书
python实现Thrift服务端的方法
2021/04/20 Python
jquery插件实现搜索历史
2021/04/24 jQuery
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python