通配符子域使用CodeIgniter进行路由

时间:2012-01-13 12:30:10

标签: php codeigniter

我一直试图围绕这个概念,以及如何正确地理解它,但我只是很难做到这一点。

我接受了我的应用的所有域名和子域名,但问题出在此处:

示例:

john.myapp.com/foo

它应该路由到foo控制器中的user函数,而不是调用名为foo的控制器。

所以:

john.myapp.com/foo -> myapp.com/user/foo
john.myapp.com/foo/bar -> myapp.com/user/foo/bar
someotherdomain.com/foo/bar -> myapp.com/user/foo/bar
myapp.com/foo -> the controller: foo

但此路由应仅适用于子域和其他域,而不适用于myapp.com

1 个答案:

答案 0 :(得分:6)

Codeigniter不支持涉及域的路由作为其默认功能的一部分。

如果你访问过www.example.com/controller/method,路由器只解释/controller/method部分而忽略之前的任何内容。

这意味着要实现您尝试使用.htaccess将子域路由到应用程序所需的内容。

RewriteCond %{HTTP_HOST} ^((?!www\.)(?!myapp\.com)[^\.]+)\.
RewriteRule ^(.*)$ /index.php?/user/%1/$1 [L] 

这会发送所有请求,例如

subdomain.example.com/controller/method转到example.com/index.php/user/controller/method

这将允许您使用标准路由功能进行路由,具体取决于子域。