【问题标题】:Zend framework: "url not found" only with index controller, only if lowercaseZend 框架:"url not found" 仅适用于索引控制器,仅在小写时
【发布时间】:2012-02-06 14:16:14
【问题描述】:

这是我的问题:

我有一个在 aruba/linux 上运行的可用 zend 应用程序。 它似乎运作良好。

我有一些控制器:索引、用户、视频……

如果我键入“http://www.foo.com/public/”,我可以访问我的索引控制器和索引操作。 如果我输入“http://www.foo.com/public/user/register”,我可以访问我的用户控制器并注册操作。

如果我键入“http://www.foo.com/public/index/index”,则找不到服务器返回 url :(

但最奇怪的是,如果我输入“http://www.foo.com/public/Index/index”(注意大写 I)它会起作用。

我尝试了一个解释,但我没有找到它:(

你能帮帮我吗?

提前致谢,加布里埃尔。

PS:在我的计算机上的语言环境中它运行良好


更新

今天下午我没有注意到的一个行为:如果我调用一个不存在的控制器,zend 会显示自定义错误页面,并写上没有指定的控制器。使用索引控制器,我得到了 404: url not found...

我完全不知道该怎么办...请帮助我!


重新更新

我已将默认控制器从“index”更改为“foo”,我已正确重命名所有文件、类和文件夹,并且应用程序运行良好,没有这个愚蠢的错误...

“索引”这个词似乎造成了某种错误。 这是一种魔法……

【问题讨论】:

  • 本地 = 窗口?如果是,请检查您的控制器的名称。 IndexController.php / 和类:IndexController 扩展..
  • 对不起,如果我没有写它:我在 apache 服务器下的 mac 上!所以它就像在 linux 上一样......名字和你写的完全一样!
  • 您的错误日志中有内容吗??
  • 是的,有这一行:[Tue Feb 07 09:49:09 2012] [error] [client 87.2.***.***] Negotiation: found file(s) matching request : /web/htdocs/www.***.com/home/public/index (无法协商)。
  • 检查您的 httpd.conf 是否有:选项索引 FollowSymLinks 多视图并删除多视图(如果已配置)

标签: zend-framework controller indexing http-status-code-404 uppercase


【解决方案1】:

我遇到了同样的问题。

问题出在我的虚拟主机设置中。 我的虚拟主机目录中有以下设置:

<Directory /home/koen/zend/ZendCMS/public>
            Options Indexes FollowSymLinks MultiViews ExecCGI
            AllowOverride All
            Order Deny,Allow
            Allow from all
</Directory>

当我在 MultiViews 前面放一个破折号时,问题就解决了。

像这样:

<Directory /home/koen/zend/ZendCMS/public>
            Options Indexes FollowSymLinks -MultiViews ExecCGI
            AllowOverride All
            Order Deny,Allow
            Allow from all
</Directory>

希望有帮助

【讨论】:

  • 非常感谢!!我试试
  • 如果这有助于您解决问题,请接受它作为答案:)
  • 你也可以去掉MultiView选项,默认是关闭的。在我的 apache2.4 中,如果我想明确排除 MultiViews,我需要将 + 或 - 放在所有选项中
【解决方案2】:

尝试将您的索引网址更改为索引/索引而不是索引/索引 apache2 在某些配置中默认选择 index 作为默认索引。* 文档根目录中可用的文件

【讨论】:

    【解决方案3】:

    当我从 Apache 2.2 升级到 2.4 时,我遇到了同样的问题。我基本上将 httpd-vhosts.php 文件从一个版本复制到下一个版本(在升级指南中列出的更改之后)。我的网站除了 /index 之外的每个页面都运行良好,但如果我关闭它,主页会加载。

    ArneRie 在原始响应线程中提供的答案为我解决了这个问题。从 conf 文件中删除 MultiViews 解决了这个问题。

    【讨论】:

      【解决方案4】:

      我将“/index”更改为“/Index”并且它起作用了

      【讨论】:

      • 你能再解释一下吗?问题的原因是什么,严格区分大小写的目录?
      【解决方案5】:

      我今天遇到了类似的问题。

      所有其他控制器都可以工作,也可以像这样路由到索引控制器:

          $router->addRoute("object", 
              new Zend_Controller_Router_Route_Regex("object/(\d+)",
                  array(
                      "controller" => "index",
                      "action"     => "object"
                  )
              )
          );
      

      也可以。

      但是 /index/object 显示 404 file not found 错误。

      必须与虚拟主机设置中的选项有关。我完全删除了它们,这对我的情况有所帮助。

      P.S.:您也可以将您的虚拟主机指向公共文件夹,这样您的链接将如下所示:http://www.foo.com/user/register 而不是 http://www.foo.com/public/user/register

      【讨论】:

        猜你喜欢
        • 2016-05-14
        • 1970-01-01
        • 2012-06-15
        • 2012-02-08
        • 1970-01-01
        • 2010-10-22
        • 1970-01-01
        • 2021-01-19
        • 2013-12-12
        相关资源
        最近更新 更多