CodeIgniter中实现泛域名解析

 更新时间:2014年07月19日 16:28:00   投稿:shichen2014   我要评论
这篇文章主要介绍了CodeIgniter中实现泛域名解析的方法,需要的朋友可以参考下

最近遇到一个项目要求使用二级域名,以方便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()的时候,如果要使用二级域名,就得另做处理了。

相关文章

  • thinkphp常见路径用法分析

    thinkphp常见路径用法分析

    这篇文章主要介绍了thinkphp常见路径用法,实例分析了__PUBLIC__、__ROOT__、__APP__、__URL__、__ACTION__及__SELF__等标签常量的用法,需要的朋友可以参考下
    2014-12-12
  • 给大家分享几个常用的PHP函数

    给大家分享几个常用的PHP函数

    本文给大家分享的是pink自己写的几个常用的PHP函数,包括截取字符串,CURL封装以及分类树函数,有需要的小伙伴可以参考下
    2017-01-01
  • php冒泡排序、快速排序、快速查找、二维数组去重实例分享

    php冒泡排序、快速排序、快速查找、二维数组去重实例分享

    这篇文章主要介绍了php冒泡排序、快速排序、快速查找、二维数组去重实例分享,需要的朋友可以参考下
    2014-04-04
  • laravel技巧之查询构造器Query Builder叠加链式调用的方法

    laravel技巧之查询构造器Query Builder叠加链式调用的方法

    这篇文章主要给大家介绍了关于laravel技巧之查询构造器Query Builder叠加链式调用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友下面来一起看看吧。
    2017-12-12
  • php利用新浪接口查询ip获取地理位置示例

    php利用新浪接口查询ip获取地理位置示例

    这篇文章主要介绍了php利用新浪接口查询ip获取地理位置示例,大家参考使用吧
    2014-01-01
  • php实现的mongodb操作类

    php实现的mongodb操作类

    说到php连mongoDB,不得不先介绍一下php的官方手册,网址在:http://us.php.net/manual/en/book.mongo.php,接下来给大家分享一个本人常用的MONGODB的操作类,详见的金沙国际官网操作都有了,小伙伴可以参考下。
    2015-05-05
  • PHP array_reduce()函数的应用解析

    PHP array_reduce()函数的应用解析

    这篇文章主要介绍了PHP array_reduce()的应用,本文通过代码举例给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • php快递单号查询接口使用示例

    php快递单号查询接口使用示例

    这篇文章主要介绍了php快递单号查询接口使用示例,需要的朋友可以参考下
    2014-05-05
  • 浅谈使用 PHP 进行手机 APP 开发(API 接口开发)

    浅谈使用 PHP 进行手机 APP 开发(API 接口开发)

    做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C),那么我们来探讨下,如何使用php进行手机API接口开发
    2014-08-08
  • thinkPHP分页功能实例详解

    thinkPHP分页功能实例详解

    这篇文章主要介绍了thinkPHP分页功能,结合完整实例形式分析了thinkPHP基于商品模型实现分页功能的相关操作技巧,需要的朋友可以参考下
    2017-05-05

最新评论