【问题标题】:Zend sub-folder as DocumentRoot for sub-domain gives invalid controller thinking folder name is a controllerZend 子文件夹作为子域的 DocumentRoot 给出了无效的控制器,认为文件夹名称是控制器
【发布时间】:2011-11-26 00:35:51
【问题描述】:

我有一个位于 /account 子文件夹中的 zend 项目。我希望能够创建子域虚拟主机并将它们的 DocumentRoot 指向这个子文件夹

在 index.php 中,我有这一行来设置 zend 项目文件夹的 URL

 define('SiteUrlUser','http://'.$_SERVER['HTTP_HOST'].'/account/');

一个子域的 DocumentRoot 设置是

 DocumentRoot /var/www/account

当我在 subomdain.domain.com 浏览网站时,它总是将 /account 添加到 URL,这是正常的,但随后会引发此错误

致命错误:未捕获异常“Zend_Controller_Dispatcher_Exception”,并带有消息“指定的控制器无效(帐户)”

现在,如果我在通过子域访问该站点时从任何 URL 中删除 /account,则页面呈现得很好。所以基本上子域中的 www.domain.com/account/something.html 将是 subdomain.domain.com/something.html ,它工作得很好。

我打算设置服务器,以便所有用户都可以通过他们的子域登录。 zend 文件夹将放在它自己的服务器上,并用作所有子域的 DocumentRoot,那么我将在 index.php 中进行哪些更改以使其正常工作?

谢谢

【问题讨论】:

    标签: apache zend-framework subdomain


    【解决方案1】:

    我不会将项目嵌套在另一个非 Zend 项目中,我会在另一个项目的 Web 可访问目录之外为其提供自己的根,并将子域指向那里。然后通过路由将您的模块/控制器设置为默认帐户。

    但是,如果您确实嵌套它们,则必须设置 baseUrl

    如果父项目也是一个 zend 应用程序,那么我会将两者合并在一起并使用路由来处理子目录映射,这样您就可以使用通配符 vhost 并将它们全部指向文件系统上的同一个应用程序实例。

    【讨论】:

    • 没有父项目。根文件夹 /var/www 是 wordpress 安装,/var/www/account 是 zend 安装(原始成员区域)现在希望将其完全移动到另一台服务器,该服务器将处理所有子域
    • 那么我所说的“父项目”是 wordpress 安装。我会按照你的建议去做,并将 zend 的东西完全保留在 wrodpress 结构之外,例如,我可能会将 wordpress docroot 更改为 /www/somename,然后使用 /var/www/accounts/public 作为 zend 项目的 web 根。因此,在文件系统方面,它们将被完全隔离。
    猜你喜欢
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多