2011-08-16 52 views
2

假設我有兩個不同的模塊用於兩個不同控制器下的站點。像,index.php/controller1/...index.php/controller2/...基於CodeIgniter控制器名稱的子域

現在,有可能有一個控制器的URL在一個子域?爲了清楚起見,在這個例子中,有可能在和index.php/controller2/..之類的URL中有index.php/controller1/...。在另一個URL如controller2.mainwebsite.com/

如果是這樣,那麼最好的方法是什麼? routes.php或.htaccess?在任何情況下,如果能夠指出我的相關鏈接,我將感激一點幫助,這也將有所幫助。

+0

那麼,例如說我的網站有兩個獨立的部分,一個是購物車,另一個是博客。購物車部分中的所有功能都由cart.php控制器控制,另一個由blog.php控制器控制。當用戶訪問mysite.com並且他們訪問博客時,我希望購物車成爲默認控制器,我希望網址顯示爲blog.mysite.com。這是要求。 – redGREENblue

回答

5

在我看來,你想要做的事情有點傻,但是,我猜這不是我要說的地方。

這裏是你的選擇,據我看到它:

修改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部分,只需在路由規則的頂部添加另一行。我甚至不知道這是否可行,本身......但它可能。我肯定會給它一個機會,因爲它可能是最少的工作量。

相關問題