旭日 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
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