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

Rya*_*yan 4 php codeigniter

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

我接受了我的应用的所有域名和子域名,但问题是:

例:

john.myapp.com/foo
Run Code Online (Sandbox Code Playgroud)

它应该路由到控制器中的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
Run Code Online (Sandbox Code Playgroud)

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

Ben*_*rne 6

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

如果您访问www.example.com/controller/method过路由器,则仅解释/controller/method部件并忽略之前的任何内容.

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

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

这将发送所有请求,如

subdomain.example.com/controller/methodexample.com/index.php/user/controller/method

这将允许您使用标准路由功能根据子域进行路由.