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&amp;&amp;mysql)六
Oct 09 PHP
php的curl实现get和post的代码
Aug 23 PHP
PHP中读取文件的8种方法和代码实例
Aug 05 PHP
php和editplus正则表达式去除空白行
Apr 17 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
May 13 PHP
Yii2.0表关联查询实例分析
Jul 18 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
Aug 29 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
Jun 19 PHP
微信接口生成带参数的二维码
Jul 31 PHP
php实现小程序支付完整版
Oct 09 PHP
Laravel timestamps 设置为unix时间戳的方法
Oct 11 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
Mar 23 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基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
深入php多态的实现详解
2013/06/09 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
php中AES加密解密的例子小结
2014/02/18 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
PHP大文件切割上传并带进度条功能示例
2019/07/01 PHP
php在linux环境中如何使用redis详解
2020/12/15 PHP
javascript html 静态页面传参数
2009/04/10 Javascript
jQuery中:only-child选择器用法实例
2015/01/03 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
2017/03/13 Javascript
JS实现复选框的全选和批量删除功能
2017/04/05 Javascript
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
Layui table field初始化加载时进行隐藏的方法
2019/09/19 Javascript
Python HTMLParser模块解析html获取url实例
2015/04/08 Python
总结Python编程中函数的使用要点
2016/03/20 Python
Python实现的凯撒密码算法示例
2018/04/12 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
Django url 路由匹配过程详解
2021/01/22 Python
澳大利亚现代波西米亚风格女装网站:Bohemian Traders
2018/04/16 全球购物
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
大学生家政服务项目创业计划书
2014/01/30 职场文书
化妆师职业生涯规划书
2014/02/16 职场文书
大学信息公开实施方案
2014/03/09 职场文书
2014年人事科工作总结
2014/11/19 职场文书
开除员工通知
2015/04/22 职场文书
爱心捐书倡议书
2015/04/27 职场文书
大学生社会实践活动总结报告
2015/05/06 职场文书
Python  lambda匿名函数和三元运算符
2022/04/19 Python