2012-01-13 98 views
4

我一直试图围绕这个概念包裹我的头,以及如何正确路由它,但我只是很难做到这一点。使用CodeIgniter的通配符子域名路由

我接受对我的应用程序的所有域和子域,但这里的问题:

例子:

john.myapp.com/foo 

应该的路线在user控制器foo功能,而不是调用一个控制器称为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

回答

6

笨不支持路由域包括作为其一部分的默认功能。

如果您访问了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/methodexample.com/index.php/user/controller/method

这将让你的路线取决于使用标准的路由功能的子域。

+1

但我怎么能路由它到一个user.example.com谁是动态创建 – jayadevkv 2014-03-05 04:38:47