我认为我有一个奇怪/复杂的情况,但我认为我忽视了一些简单的事情。我们正在建立一个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