通往Codeigniter控制器的子域名?

Kei*_*ith 24 php apache .htaccess codeigniter cpanel

这似乎是一个常见的请求,但我无法找到关于做这样的事情的明确指示.

我想要一个子域来触发我的CI安装上的某个控制器.例如:

students.mysite.com:会打开mysite.com/students(技术上:mysite.com/index.php/students.控制器: 学生)

teachers.mysite.com:会打开mysite.com/teachers

在深入穿越时保留子域.例如:

students.mysite.com/help:会打开mysite.com/students/help(控制器:students(),方法:help())

students.mysite.com/help/contact:会打开mysite.com/students/help/contact(控制器:students(),方法:help(),参数:"contact")

students.mysite.com/help/contact/email:会打开mysite.com/students/help/contact(控制器:students(),方法:help(),参数:"contact","email")

我意识到something.mysite.com现在返回错误.所以我认为:

第1步将允许anything.mysite.com返回根(mysite.com/index.php)

第2步将读取子域并调用该控制器

第3步将在第一个"/"之后读取第一个参数并调用控制器的该方法,并将剩余的url部分作为参数传递

我想我真的很难过第一步.我在共享主机帐户上,这是我可以通过CPanel做的事情吗?我尝试在没有任何运气的情况下为*.mysite.com添加子域名(除非我只需要等待更长时间才能进行传播,但我觉得错误的可能性更大).

回到我家的WAMP安装,我会更改httpd.conf,对吧?我可以在不修改该文件的情况下实现此效果(因为我可能不能,因为我使用webhostinghub.com共享)

哎呀,谢谢你的时间! - 基思

Cho*_*roc 32

由于您希望使用特定域来引导您的控制器,我想到的是使用该application/config/routes.php文件来实现它.这个想法是根据您使用的子域加载不同的控制器,因此,您不必为您的域编写路由列表,而是在您要访问的域上编写路由依赖列表:

switch ( $_SERVER['HTTP_HOST'] ) {
    case 'students.mysite.com':
        $route['default_controller'] = "students";
    break;
    case 'teachers.mysite.com':
        $route['default_controller'] = "teachers";
    default:
        // The list of your $routes lines at is was...
    break;
}
Run Code Online (Sandbox Code Playgroud)

为了使这项工作,您只需将子域指向您的CI项目(Dwayne Towell在另一个答案的第1步中解释了如何完美地完成)并且您将使一切正常工作,您的共享主机将不会是问题,您不必配置服务器.

  • 不接触.htaccess文件,以及控制器对子域的排他性,很好的答案. (2认同)