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 相关文章推荐
PHP5.0对象模型探索之抽象方法和抽象类
Sep 05 PHP
一个oracle+PHP的查询的例子
Oct 09 PHP
PHP网站基础优化方法小结
Sep 29 PHP
ThinkPHP分页类使用详解
Mar 05 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
May 19 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
PHP中iconv函数转码时截断字符问题的解决方法
Jan 21 PHP
Session 失效的原因汇总及解决丢失办法
Sep 30 PHP
PHP获取客户端及服务器端IP的封装类
Jul 21 PHP
php使用PDO执行SQL语句的方法分析
Feb 16 PHP
PHP封装返回Ajax字符串和JSON数组的方法
Feb 17 PHP
详解php命令注入攻击
Apr 06 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 auth_http类库进行身份效验
2009/03/19 PHP
分享一个Laravel好用的Cache宏
2015/03/02 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
探讨javascript是不是面向对象的语言
2013/11/21 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
微信小程序 动态绑定数据及动态事件处理
2017/03/14 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
2017/09/13 Javascript
vue cli 3.0 使用全过程解析
2018/06/14 Javascript
基于Vue实现电商SKU组合算法问题
2019/05/29 Javascript
JavaScript基础之this和箭头函数详析
2019/09/05 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
Vue3新特性之在Composition API中使用CSS Modules
2020/07/13 Javascript
调试Python程序代码的几种方法总结
2015/04/28 Python
python flask实现分页效果
2017/06/27 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
python requests使用socks5的例子
2019/07/25 Python
python标记语句块使用方法总结
2019/08/05 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
Python2与Python3关于字符串编码处理的差别总结
2020/09/07 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
计算机操作自荐信
2013/12/07 职场文书
战略合作意向书范本
2014/04/01 职场文书
校园安全广播稿范文
2014/09/25 职场文书
依法行政工作汇报
2014/10/28 职场文书
2015年银行员工工作总结
2015/04/24 职场文书
金榜题名主持词
2015/07/02 职场文书
少先队中队工作总结
2015/08/14 职场文书
小学语文课《掌声》教学反思
2016/03/03 职场文书
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis