产品和类别页面上的Magento 404错误

时间:2012-07-02 09:55:51

标签: php magento

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

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

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

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

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

您可以在此处查看问题:http://staging.albionwine.co.uk/wines

5 个答案:

答案 0 :(得分:0)

检查类别网址是否正确。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

如果您要覆盖“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>

答案 4 :(得分:0)

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

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

解决方法是手动创建视图。每次设置新的泊坞窗时,这样做都非常烦人。下面是创建清单视图的查询。

记住要重新索引并清除缓存。 php bin / magento索引器:reindex 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` )));