在我看來,你想要做的事情有點傻,但是,我猜這不是我要說的地方。
這裏是你的選擇,據我看到它:
修改Apache配置或.htaccess文件中使用mod_rewrite重定向到一個特定子域到一個特定的控制器電話:
例如(我沒有測試過這個):
RewriteEngine on
RewriteCond %{HTTP_HOST} ^blog.example.com$
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /index.php/blog/$1 [L]
這應該至少指出你在正確的方向,我認爲。當然,這裏假設你的子域指向相同的IP地址,並且設置apache虛擬主機以將該子域指向與普通域相同的目錄。
您還需要將所有鏈接指向子域並省略控制器。所以,如果URL通常是:http://www.example.com/blog/cat/awesome那麼您需要將鏈接指向http://cart.example.com/cat/awesome。所以,你不能再使用像site_url('cart/cat/awesome')
這樣的好幫手功能了 - 那對我來說是一個大關。
我希望這是有道理的。
設置你的CI實例支持多個應用程序,只是有子域點到相應的應用程序目錄
欲瞭解更多信息:http://codeigniter.com/wiki/Multiple_Applications/
請與Route類的一些瘋狂的東西:
在您的routes.php配置文件中:
if(preg_match('/^blog/',$_SERVER['HTTP_HOST'])) {
$route['(:any)/(:any)/(:any)/(:any)'] = 'blog/$1/$2/$3/$4';
$route['(:any)/(:any)/(:any)'] = 'blog/$1/$2/$3';
$route['(:any)/(:any)'] = 'blog/$1/$2';
$route['(:any)'] = 'blog/$1';
$route['blog'] = 'blog/index';
}
如果您的任何頁面需要超過4個URI部分,只需在路由規則的頂部添加另一行。我甚至不知道這是否可行,本身......但它可能。我肯定會給它一個機會,因爲它可能是最少的工作量。
那麼,例如說我的網站有兩個獨立的部分,一個是購物車,另一個是博客。購物車部分中的所有功能都由cart.php控制器控制,另一個由blog.php控制器控制。當用戶訪問mysite.com並且他們訪問博客時,我希望購物車成爲默認控制器,我希望網址顯示爲blog.mysite.com。這是要求。 – redGREENblue