如何为多个子域设置Yii,使受保护的文件夹位于每个子域的文档根目录之外


How do I setup Yii for multiple subdomains so the protected folder sits outside the document root for each subdomain

我决定开始使用OOP和PHP框架进行编码。我已经成功地在开发服务器上安装了Yii,并创建了一个网络应用程序。现在,出于安全考虑,我想将受保护的文件夹移动到文档根目录之外的级别。我的问题是,当有多个子域名我也将使用Yii时,如何做到这一点。

我有PHP的经验,但不是OOP风格的,这是我进入OOP和框架的第一步。此外,我在Ubuntu上安装了一个LAMP系统进行开发。

我的路径结构如下,它与生产服务器相匹配。我有一个顶级网站和多个其他顶级网站和一个顶级站点的子域网站。

顶级网站-/home/mark/public_html/{网站一个文件}
顶级站点-/home/mark/public_html/website two.com/{website two files}
顶级站点-/home/mark/public_html/website three.com/{website three-files}
我的子域-/home/mark/public_html/sub1.website three.com/{sub-files}
我的子域-/home/mark/public_html/sub2.website three.com/{sub2 files}
我的子域-/home/mark/public_html/sub3.website three.com/{sub3 files}

我在以下位置安装了Yii:/home/mark/Yii

我在/home/mark/public_html/sub1.website-three.com上创建了一个网络应用程序,并在本地访问Yii网络应用程序http://sub1.website-three/。。。。我不使用http://localhost因为我有虚拟主机和子域。所有这些都有效,并将在网站三下的其他子域创建更多的网络应用程序。

我可以将受保护的文件夹重命名为sub_protected并将其放在/home/mark中,然后为我的下一个Web应用程序将受保护文件夹命名为sub2_protected,依此类推吗?我应该使用不同的路径结构吗???此外,我相信我需要编辑每个网站的protected/config/main.php以反映更改???

如有任何协助,我们将不胜感激。迫不及待地想配置一下,这样我就可以深入了解Yii。。。到目前为止看起来非常有趣。

您可以随心所欲地命名受保护的文件夹,并将其放在您的文件系统中Web服务器用户可以访问的任何位置,因此yes/home/mark/sub*n*_protected方案会起作用。

但是,特别是如果您的网站相似并且有任何共享代码,那么使用一个受保护的文件夹,在主配置文件中设置一组urlManager规则,并根据主机名加载适当的规则可能会更有效。然后,您可以为每个主机以及视图目录设置专用控制器。我经常为移动版本这样做,在移动版本中,您还可以将移动检测添加到混合中。

如果站点是不同的,那么使用单独的受保护目录也可能有意义。例如,我将为基于Gii生成的脚手架的管理工具使用一个单独的受保护目录。

如果网站非常相似,您可能还想查看主题:http://www.yiiframework.com/doc/guide/1.1/en/topics.theming

当然可以将受保护的文件夹放在文档根目录下。只需在您的配置中为网站使用下一个代码:

return array(
    'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'..',

并且您的protected文件夹将在中查看

/home/mark/protected