我認爲我有一個奇怪/複雜的情況,但我認爲我忽視了一些簡單的事情。我們正在建立一個Yii應用程序,該應用程序將託管其他人創建的「皮膚」。它基本上是一個大社區,但在許多不同的網站上。一切都將由一個單一的通用核心Yii應用程序處理。許多社區站點的虛擬文檔根目錄
我們的計劃是讓這取決於皮膚的主人想要做兩個不同的URL配置:
1)whatever.theirsite.com(被設置爲CNAME到portal.oursite.com - 爲高級用戶)
2)portal.oursite.com/theircommunity - 爲那些誰只是希望它沒有其他配置
在第一種情況下工作,這是很容易挑出SERVER_NAME變量,擡頭數據庫中正確的主題,並提供正確的主題/社區。我在過去實際上已經完成了這項工作,並且工作正常。但是,我對第二種情況有點遺憾。我仍然可以通過db查找來找出portal.oursite.com/theircommunity提供的主題,但是所有路由都會因爲它們的社區不是控制器而被搞砸。它更像是一個虛擬目錄,但它的動態。我覺得我缺少一個簡單的htaccess或可能的UrlManager規則。
有效例如網址如下:
http://whatever.theirsite.com/mycontroller/myaction
http://portal.oursite.com/theircommunity/mycontroller/myaction
或模塊:
http://whatever.theirsite.com/mymodule/mycontroller/myaction
http://portal.oursite.com/theircommunity/mymodule/mycontroller/myaction
在所有情況下,兩對請求的需要去同一個地方。後端處理確保它們看起來不同,但是由相同的代碼處理。
有什麼建議嗎?
編輯: 我想到的一個解決方案,但尚未測試(不知道它是否是個好主意,或者它甚至可以工作)將擴展URL管理器以添加新的路由規則,具體取決於在哪個社區被要求。
例如:
應用程序運行之前,做一個數據庫查找,以找出我們 正在使用的主題。
如果主題使用虛擬根目錄,則複製所有現有的url管理器規則,但將它們的社區名稱附加到它們的前面。
我明白你的意思了。如果沒有其他選擇,這可以工作。我希望有一個更「優雅」的解決方案,不需要創建新的目錄。 – Eric