Subdomains leading to Codeigniter Controllers? Subdomains leading to Codeigniter Controllers? apache apache

Subdomains leading to Codeigniter Controllers?


As you want to use a particular domain to lead to your controllers, what I came up with was using the application/config/routes.php file to achieve it. The idea is load different controllers depending on what subdomain you use, so, instead of writing a list of routes for your domain, you write a list of routes DEPENDING on the domain you're accessing from:

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;}

To make this work, you only have to point the subdomain to your CI project (Dwayne Towell in the step 1 of the other answer explains how to do it perfectly) and you'll have everything working, your shared hosting won't be a problem and you won't have to configure the server.

UPDATE

After reading this answer, check the answer from @Josh (https://stackoverflow.com/a/47368922/1168804) as it offers a wonderful way to organize the routing code to avoid unexpected routing behaviour with the controllers. It's worthy reading it (and upvoting it, ;D)


Step 1: In CPanel, in Domains, in subdomains, add *.mysite.com (you only enter the * part) to redirect to /public_html/ (you enter nothing and/or delete wildcard) (or set this to whatever the current default value for www.mysite.com is currently.

Step 2 & 3: Use mod_rewrite to capture subdomain and move it to the "directory" part of the URL. I suspect it will be something like: (but I haven't tried it yet, RewriteLogLevel 9 is your friend)

RewriteEngine onRewriteCond %{HTTP_HOST} ^([^\.]+)\.mysite\.com$ [NC]RewriteRule ^(.*)$ http://www.domain.com/index.php/%1/$1 [L]

I also don't know if you can do the above using .htaccess. I have only done rewriting from httpd.conf.


In application/config/routes.php file, you need to write

$subDomains = array();$subDomains['students.mysite.com'] = "student";$subDomains['teachers.mysite.com'] = "teachers";if(array_key_exists($_SERVER['HTTP_HOST'], $subDomains)) {  $route['default_controller'] = $subDomains[$_SERVER['HTTP_HOST']];}