查看完整版本: 如何使用CI框架支持多域名

旭日 2008-4-28 14:54

如何使用CI框架支持多域名

使用CI框架,如果支持多域名呢?

如下说明:

1、入口文件index.php
2、每个模块对应一个三级域名
      2.1 模块Blog,对应[url=http://blog.xxx.com]http://blog.xxx.com[/url];模块Book,对应[url=http://book.xxx.com]http://book.xxx.com[/url]
            以上rewrite后可以为[url=http://www.xxx.com/blog]http://www.xxx.com/blog[/url]和[url=http://www.xxx.com/book]http://www.xxx.com/book[/url]

有谁知道这样的问题吗?帮忙解决一下,谢谢。

Hex 2008-4-28 15:03

CI 多应用程序请参考 [url]http://codeigniter.org.cn/user_guide/general/managing_apps.html[/url]

旭日 2008-4-28 16:05

[quote]原帖由 [i]Hex[/i] 于 2008-4-28 15:03 发表 [url=http://codeigniter.org.cn/forums/redirect.php?goto=findpost&pid=2946&ptid=511][img]http://codeigniter.org.cn/forums/images/common/back.gif[/img][/url]
CI 多应用程序请参考 [url=http://codeigniter.org.cn/user_guide/general/managing_apps.html]http://codeigniter.org.cn/user_guide/general/managing_apps.html[/url] [/quote]

这个多应用已经试过了,这个可以。

但是就一个入口文件的话实现不了多域名。

如果把index.php改名试了也可以。但是把它移入下一层目录就不行了。提示加载不了config

Hex 2008-4-28 16:16

呵呵,CI 多应用程序只有这一条路。

nio 2008-5-1 07:32

$site_matrix = array(
"$site1" => "$path1",
"$site2" => "$path2"
);

$def_pg = "$def_path";
$server = $_SERVER["HTTP_HOST"];
$pg = $site_matrix[$server];
if($pg == "") $pg = $def_pg;
header("Location: $pg");

多年前整理的,不知道行不?

ajivanet 2008-5-30 15:55

将DOMIAN rewrite 成一个参数传入 index.php?subdomian=xxx.domain.com  在程序里再解析..
域名设置为泛解析,这个是肯定的.

LEMON 2008-6-11 17:09

[quote]
原帖由 [i]旭日[/i] 于 2008-4-28 14:54 发表 [url=http://codeigniter.org.cn/forums/redirect.php?goto=findpost&pid=2945&ptid=511][img]http://codeigniter.org.cn/forums/images/common/back.gif[/img][/url]

使用CI框架,如果支持多域名呢?

如下说明:

1、入口文件index.php
2、每个模块对应一个三级域名
      2.1 模块Blog,对应[url=http://blog.xxx.com/]http://blog.xxx.com[/url];模块Book,对应[url=http://book.xxx.com/]http://book.xxx.com[/url]
            以上rewrite后可以为[url=http://www.xxx.com/blog]http://www.xxx.com/blog[/url]和[url=http://www.xxx.com/book]http://www.xxx.com/book[/url]

有谁知道这样的问题吗?帮忙解决一下,谢谢。
[/quote]

一个大概的思路:

1、域名支持泛域名解析最好;
2、需要支持rewrite的模块;

以Linux下Apache为例:
[url=http://book.ci.com/item/10001.html]http://book.ci.com/item/10001.html[/url] -> [url=http://www.ci.com/index.php/book/item/10001.html]http://www.ci.com/index.php/book/item/10001.html[/url]

前面的url地址是显示给用户的某一本书的地址,CI中实际地址在后面,只要写规则转换上面的地址就可以了。

这里引入一个RewriteMap文件,实现多个二级域名对应一个控制器,下面是内容:

book.ci.com   book
books.ci.com  book
reader.ci.com book
letter.ci.com   book

保存成sub-domain.map 文件,放在 /etc/httpd/conf/sub-domain.map下面

下面是规则
RewriteMap        case-lower         int:tolower
RewriteMap        sub-domain        txt:/etc/httpd/conf/sub-domain.map   
RewriteCond       ${case-lower:%{HTTP_HOST}}     ^(.+)$
RewriteCond       ${sub-domain:%1}      ^(/.*)$
RewriteRule       ^/(.*)$           /index.php/%1/$1


注明:仅是一个思路,规则没有测试,希望有帮助。

[[i] 本帖最后由 LEMON 于 2008-6-11 21:13 编辑 [/i]]

yygcom 2008-7-16 16:45

[code=PHP]if($HTTP_HOST=="www.aaa.com"){
    $application_folder = "application/aaa";
}elseif($HTTP_HOST=="www.bbb.com"){
    $application_folder = "application/bbb";
}[/code]
估计这样可以吧

旭日 2008-7-21 17:13

谢谢大家,这个问题已经搞定了。
正如Hex发的这个手册的说明一样。
其实是我把它想复杂了。

大概目录是这样:

[路径]/system(system可以放在服务器的任何地方)
[网站目录]/blog/app(blog应用程序)
[网站目录]/blog/index.php(blog入口)
[网站目录]/book/app(book应用程序)
[网站目录]/book/index.php(book入口)

这样子就可以达到效果了。当然,路径的配置要修改index.php和config.php
页: [1]
查看完整版本: 如何使用CI框架支持多域名