【问题标题】:Magento 404 errors on product and category pages产品和类别页面上的 Magento 404 错误
【发布时间】:2012-07-02 09:55:51
【问题描述】:

我在产品和类别页面上从 Magento 收到 404 错误页面。所有其他页面都工作正常(包括搜索和内容页面)。我已经多次重建所有缓存,现在完全转换它们,我重新索引所有内容都无济于事。我不认为这是一个重写问题,因为直接通过完整 url 访问页面也会返回相同的错误,并且在 searc、博客、cms 等中重写工作正常。

我现在花了大约 6 个小时试图修复这个错误,包括大量的谷歌搜索,并且在这里也发现了类似的问题(例如 Magento product and category pages return magento 404),但没有一个解决方案解决了我的问题。

我认为问题一定出在我的布局 XML 文件或模板 PHTML 文件中。我已尝试将所有自定义文件替换为基本 Magento 文件,但问题仍然存在。

我在 index.php 中打开了开发者模式并启用了完整的日志记录(包括创建具有完整写入权限的日志文件) - 仍然没有有用的错误消息,并且日志文件中没有任何内容。

现在变得非常绝望 - 如果有人可以建议任何进一步的尝试步骤,我将非常感激!

你可以在这里看到问题:http://staging.albionwine.co.uk/wines

【问题讨论】:

  • 像staging.albionwine.co.uk/catalog/category/view/id/5 这样的直接链接也不起作用。请检查产品和类别的 ststus(从根到子)。
  • 我检查了根类别 > 商店之间的关联,并且它设置正确,如果您进行搜索(例如尝试搜索“红色”),产品确实会出现在结果中。
  • 有趣的挑战:)。你能附上 _magento_dir_/var/log/ 的错误日志吗?
  • 这真的很奇怪——即使打开了完整的日志记录和调试,Magento 也没有记录任何错误!我检查了异常日志文件本身是否可以被 apache 完全读取。我也检查了系统日志,其中也没有任何相关内容,只有一周多前的几条消息。我完全被难住了......
  • 这是整个系统日志文件,这只是一个 twitter 错误,因为设计师暂时使用了一个虚拟 URL - 我将其注释掉以停止错误:2012-06-28T22:24 :35+00:00 ERR (3): 警告: DOMDocument::load(search.twitter.com/search.atom?q=from:AlbionWines&rpp=1) [domdocument.load]: 未能打开流: HTTP 请求失败!第 53 行 /home5/bluspace/public_html/albionwine-staging/app/code/local/Creare/Latesttweet/Block/Latesttweet.php 中的 HTTP/1.0 420 客户端错误 (420)

标签: php magento


【解决方案1】:

检查类别 URL 是否正确。

【讨论】:

  • 请参阅上面的 cmets - 产品也有问题,即使直接访问也是如此,而且似乎不是重写问题。这些 URL 以前运行良好。
【解决方案2】:

我通过备份我的皮肤、布局和模板文件夹以及数据库,然后完全擦除 magento 安装并用一个干净的替换它来最终解决了这个问题。重新上传备份的文件夹和数据库后,我恢复了所有自定义设置,错误消失了。我只能认为在某些时候,其中一个核心文件被无意中编辑了。

【讨论】:

  • 我忘了问你 - 你所有的类别都是儿童只是一个根类别?如果没有,或者如果您之前更改过它,请检查当前商店的默认根类别。就在半小时后,我看到类别显示在顶部菜单中,但如果转到它会抛出 404 页面并且原因就在那里。
【解决方案3】:

我们遇到了类似的问题。根本原因是,我们为目录请求(硬拷贝)开发了一个小模块。该模块工作正常,但是,我们的产品页面停止工作。

因此,我们暂时停用了该模块,然后产品/类别页面开始工作。

【讨论】:

    【解决方案4】:

    确保在覆盖“Mage_Catalog”模块(产品或类别控制器)的情况下,您以正确的方式进行操作。就我而言,错误就在那里。

    我不得不改变我覆盖产品控制器的方式:

     <routers>
        <my_mudule>
           <use>standard</use>
           <args>
              <module>My_Module</module>
               <frontName>catalog</frontName>
           </args>
        </my_module>
     </routers>
    

    到

        <routers>
            <catalog>
                <args>
                    <modules>
                        <My_Module before="Mage_Catalog">My_Module</My_Module>
                    </modules>
                </args>
            </catalog>
        </routers>
    

    【讨论】:

      【解决方案5】:

      在我们的例子中,问题与在平台之间迁移数据库时的权限有关,开发服务器到本地。类别页面会加载,但产品详细信息页面会显示 404 而不会出现错误。

      我们的问题的原因是数据迁移试图创建一个视图,但由于 mysqldump 如何创建查询而没有这样做的权限。导航到后端的产品页面将显示没有库存。

      修复是手动创建视图。每次设置一个新的 docker 时都非常烦人。下面是创建库存视图的查询。

      记得重新索引并清除缓存。 php bin/magento 索引器:重新索引 php bin/magento 缓存:清除 php bin/magento 缓存:刷新

      CREATE
      OR REPLACE
      VIEW `inventory_stock_1` AS select
          distinct `legacy_stock_status`.`product_id` AS `product_id`,
          `legacy_stock_status`.`website_id` AS `website_id`,
          `legacy_stock_status`.`stock_id` AS `stock_id`,
          `legacy_stock_status`.`qty` AS `quantity`,
          `legacy_stock_status`.`stock_status` AS `is_salable`,
          `product`.`sku` AS `sku`
      from
          ( `cataloginventory_stock_status` `legacy_stock_status`
      join `catalog_product_entity` `product` on
              (( `legacy_stock_status`.`product_id` = `product`.`entity_id` )));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多