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()的时候,如果要使用二级域名,就得另做处理了。

(0)

相关推荐

  • apache+codeigniter 通过.htcaccess做动态二级域名解析

    复制代码 代码如下: AuthName "yousite Website Coming Soon..." //如果你想给你的网站加个权限访问 AuthType Basic AuthUserFile D:/xxx/.htpasswd #如果你想设置密码访问 如何生成.htpasswd可以访问 http://www.htaccesstools.com/htpasswd-generator/ #AuthGroupFile /dev/null require valid-user <If

  • codeigniter集成ucenter1.6双向通信的解决办法

    用codeigniter开发一个子网站,之后想和原来的论坛进行同步,包括同步登陆和双向通信 先装好ucenter,然后新建一个other的应用,把生成的代码拷出来,新建一个config.ini.php到你的uc_client,ucenter会产生一个yourdomain.com/api/uc.php的请求,/api/uc.php不需要填写,要保证ucenter请求正确位置,才能做到双向通信 把uc_client复制到你的网站,目录可以自己定,就根目录吧.如果你把api目录放到uc_client目

  • 使用CodeIgniter的类库做图片上传

    CodeIgniter的文件上传类允许文件被上传.您可以设置指定上传某类型的文件及指定大小的文件. 上传文件普遍的过程: 一个上传文件用的表单,允许用户选择一个文件并上传它.当这个表单被提交,该文件被上传到指定的目录.同时,该文件将被验证是否符合您设定的要求.一旦文件上传成功,还要返回一个上传成功的确认窗口. 下面是表单: 复制代码 代码如下: <form method="post" action="<?=base_url()?>admin/img_uplo

  • CodeIgniter模板引擎使用实例

    一.示例: 通常在使用codeigniter的时候经常使用这样的方式载入: $this->load->view('about', $data); 通过这个类库,可以将一个视图载入到这个模板中: $this->template->load('template', 'about', $data); 这里将视图about.php载入到template模板文件中. 二.安装 下载ci_template_library.zip 解压后将Template.php放到application/li

  • 让CodeIgniter的ellipsize()支持中文截断的方法

    CodeIgniter的Text Helper有一个ellipsize()方法,用来过滤HTML标签并且截断文字十分好用.但是它对中文支持的特别不好,在中文中使用就有乱码出现. 下面有网友将function ellipsize()进行了修改,使得它支持中文: 在CI 2.1.3版本中,修改ci_2.1.3\system\helpers\text_helper.php 文件 复制代码 代码如下: function ellipsize($codepage = 'UTF-8',            

  • 解析CI即CodeIgniter框架在Nginx下的重写规则

    最近研究CI框架,发现这个框架的路由功能在Nginx下有问题,报404错误,后来在网上查资料,发现需要开启PATH_INFO.在nginx7.16以后貌似就支持PATH_INFO了,只需要在配置文件中开启即可.打开nginx.conf文件,在你的虚拟主机下增加重写规则,代码如下: 复制代码 代码如下: server { listen      80;       server_name   www.ci.com;       location / {           root  d:/www

  • CodeIgniter中使用cookie的三种方式详解

    cookie在php程序设计中应用十分广泛,本文所述CodeIgniter中使用cookie主要有以下三种方式,读者可以根据自身项目需求酌情采用. 第一种方式:采用php原生态的方法设置的cookie的值 setcookie("user_id",$user_info['user_id'],86500); setcookie("username",$user_info['username'],86500); setcookie("password"

  • CodeIgniter实现更改view文件夹路径的方法

    控制view文件夹路径的代码:system/core/loader.php public function add_package_path($path, $view_cascade=TRUE) { $path = rtrim($path, '/').'/'; array_unshift($this->_ci_library_paths, $path); array_unshift($this->_ci_model_paths, $path); array_unshift($this->

  • 新浪SAE云平台下使用codeigniter的数据库配置

    由于新浪SAE对文件权限的限制,cache目录无法修改权限,因此原版Codeigniter无法直接使用.可以尝试codeIgniter 2.10 for SAE:http://code.google.com/p/ci-sae/. 在database.php中配置如下: 复制代码 代码如下: $db['default']['hostname'] = SAE_MYSQL_HOST_M;$db['default']['username'] = SAE_MYSQL_USER;$db['default']

  • 解析CodeIgniter自定义配置文件

    我们有时候在CI框架中需要自定义配置文件,那要怎么处理呢?下面就给你介绍处理的办法.配置文件config/expert.php 复制代码 代码如下: <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');/** * 专家配置文件 * * @author xxx * @version $Id: expert.php v 1.0 2012/5/31 14:41:00 xxx $ * @package as

  • CodeIgniter框架过滤HTML危险代码

    CodeIgniter过滤HTML危险代码的方法其实有好几种,其中最常见的有如下几种: 1.可以选择使用htmlspecialchars()方法过滤. 2.可以将config文件夹下面的config.php文件中的$config['global_xss_filtering'] = FALSE;设置为: 复制代码 代码如下: $config['global_xss_filtering'] = true; 但是这样设置后会加大服务器的开销的.所以看情况来设置. 3.可以在$this->input->

随机推荐