【问题标题】:How do I setup Yii for multiple subdomains so the protected folder sits outside the document root for each subdomain如何为多个子域设置 Yii,使受保护的文件夹位于每个子域的文档根目录之外
【发布时间】:2011-09-09 19:13:09
【问题描述】:

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

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

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

顶级网站 - /home/mark/public_html/{网站一文件}
顶级站点 - /home/mark/public_html/website-two.com/{website-two 文件}
顶级网站 - /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 文件}
我的子域 - /home/mark/public_html/sub3.website-three.com/{sub3 files}

我已将 Yii 安装在:/home/mark/Yii

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

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

任何帮助将不胜感激。迫不及待地想要进行配置,这样我就可以更深入地了解 Yii ...到目前为止看起来很有趣。

【问题讨论】:

    标签: php oop ubuntu yii lamp


    【解决方案1】:

    您可以随意命名受保护的文件夹,并将其放在您的网络服务器用户可以访问的文件系统中的任何位置,因此,是的 /home/mark/sub*n*_protected 方案可以工作。

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

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

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

    【讨论】:

    • 谢谢,我确实将受保护的文件夹移动并重命名了,但现在想想你说的。这些站点非常相似......相同的数据结构,相同的布局,只是不同的名称和不同的颜色/图像等。如果我能让它们都共享同一个受保护的文件夹然后使用主题,那听起来像是要走的路.共享同一个数据库怎么样?这是否会给共享受保护的文件夹或主题添加任何问题?
    • 不,我认为共享同一个数据库没有任何问题。如果出于某种原因您不想这样做,您始终可以使用上述相同的技术为 urlManager 加载不同的规则并加载不同的数据库设置,甚至为不同的站点/主机使用不同的表前缀。
    【解决方案2】:

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

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

    您的protected 文件夹将被查看

    /home/mark/protected
    

    【讨论】:

    • 谢谢,我确实移动并重命名了受保护的文件夹,并更改了配置以表示更改。一切正常......但现在考虑主题和数据库,以及处理这些的最佳方法。这个页面也帮助了...yiiframework.com/wiki/116/…
    猜你喜欢
    • 2016-06-28
    • 2021-06-04
    • 1970-01-01
    • 2023-03-20
    • 2013-08-11
    • 2012-10-23
    • 2013-05-17
    • 2021-09-24
    • 2011-08-25
    相关资源
    最近更新 更多