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 on
RewriteCond %{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.