【问题标题】:Running Zend Framework in a subfolder - Problems with default controller在子文件夹中运行 Zend Framework - 默认控制器的问题
【发布时间】:2011-07-04 19:59:51
【问题描述】:

我正在启动一个 Zend 应用程序,我需要将它放在这样的子文件夹中:

  • /子文件夹
    • 应用
    • 公开 ...

我做了以下事情:

  1. 我在application.ini中设置了base url:
resources.frontController.baseUrl = "/subfolder"
  1. 我将 .htaccess 从公用文件夹直接移动到 /subfolder,同时将 htaccess 更改如下:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ public/index.php [NC,L]

这就是我所做的一切。一切都按预期工作。我可以添加带有动作视图的控制器博客,并可以通过调用来访问它:

/子文件夹/博客/视图

url 视图助手和其他东西也可以正常工作。唯一不起作用的是默认控制器。所以当我进入时:

/subolder/

我得到 403(禁止)。如果我输入

/子文件夹/索引

...它有效。我错过了什么?!

提前致谢! 小蜜蜂

【问题讨论】:

  • 为什么要将 .htaccess 从公用文件夹中移开?我认为这会导致各种问题。
  • 那我还能如何使用子文件夹呢?有更好的方法吗?
  • 您不必混淆(和混合)您的 Web 文件夹结构和区域设置文件结构。您的 Zend 应用程序可以存在于您希望它存在于 Web 服务器上的任何位置。不过,您的 index.php 必须找到它。您的公共(网络)文件夹应该只包含该 index.php 以及需要通过网络浏览器访问的内容,例如 CSS、图像。根据您的 htaccess /subfolder 存在,因此 index.php 不会被触发,但也会出现 403 错误。

标签: zend-framework subdirectory


【解决方案1】:

您不需要对您的 zf 公共文件夹进行任何更改,只需在“/subfolder”目录中创建一个 .htaccess 文件,其中包含以下几行

# Rewrite rules
RewriteEngine on
RewriteRule (.*) ./public/$1

【讨论】:

  • 您是否也有上述安全问题?我看不出有什么问题,因为所有内容都被重定向到 public/index.php?
  • @teebee 取决于您将来的应用程序。您可能需要进行更改,然后它会困扰您。大多数标准和最佳实践并不是为了惹恼人们,而是因为其他人了解了问题。大多数时候都是艰难的路。
【解决方案2】:

替换 RewriteRule ^.$ public/index.php [NC,L] 和 重写规则 ^.$ http://addressto/index.php [R=302,NC] 或者 RewriteRule ^.*$ /public/index.php [NC,L]

我不确定将除公共以外的 ZF 文件夹放入可公开访问的文件夹中是否正确。这会使您的网站存在安全漏洞。您必须将 ZF 的公共文件夹的内容放入您服务器的公共文件夹中,并将其他文件夹放入不可公开访问的文件夹中。如果您需要多个 ZF 应用程序的实例,您可以使用 Zend 模块系统。请参阅 zend 在线文档以获取更多详细信息。

【讨论】:

    猜你喜欢
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多