Magento - 产品页面 404 具有正确的产品数据

Magento - Product Page 404 with correct product data

我在 Magento 数据导入方面遇到了一个 st运行ge 问题,想知道是否有其他人遇到过这个问题并且可能找到了帮助诊断问题的解决方案。

我使用 Magento 数据迁移工具将数据从 Magento 1 实例迁移到现有的 Magento 2 实例。 Magento 2 实例已经有一些数据,所以这不是所有内容的全新副本,我分阶段进行,首先是订单,然后是客户,最后是产品和类别。我忽略了 CMS 块和页面,因为它们需要保留以及主题和一些其他设置和问题(所以我只 运行 migrate:data)。

我的数据迁移配置文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
        xs:noNamespaceSchemaLocation="urn:magento:module:Magento_DataMigrationTool:etc/config.xsd">
    <steps mode="data">
        <step title="Data Integrity Step">
            <integrity>Migration\Step\DataIntegrity\Integrity</integrity>
        </step>
        <step title="EAV Step">
            <integrity>Migration\Step\Eav\Integrity</integrity>
            <data>Migration\Step\Eav\Data</data>
            <volume>Migration\Step\Eav\Volume</volume>
        </step>
        <step title="Map Step">
            <integrity>Migration\Step\Map\Integrity</integrity>
            <data>Migration\Step\Map\Data</data>
            <volume>Migration\Step\Map\Volume</volume>
        </step>
        <step title="Url Rewrite Step">
            <integrity>Migration\Step\UrlRewrite\Version191to2000</integrity>
            <data>Migration\Step\UrlRewrite\Version191to2000</data>
            <volume>Migration\Step\UrlRewrite\Version191to2000</volume>
        </step>
        <step title="ConfigurablePrices step">
            <integrity>Migration\Step\ConfigurablePrices\Integrity</integrity>
            <data>Migration\Step\ConfigurablePrices\Data</data>
            <volume>Migration\Step\ConfigurablePrices\Volume</volume>
        </step>
        <step title="Inventory Step">
            <integrity>Migration\Step\Inventory\Integrity</integrity>
            <data>Migration\Step\Inventory\Data</data>
            <volume>Migration\Step\Inventory\Volume</volume>
        </step>
        <step title="PostProcessing Step">
            <data>Migration\Step\PostProcessing\Data</data>
        </step>
    </steps>
    <steps mode="delta">
        <step title="Map Step">
            <delta>Migration\Step\Map\Delta</delta>
            <volume>Migration\Step\Map\Volume</volume>
        </step>
        <step title="ConfigurablePrices step">
            <delta>Migration\Step\ConfigurablePrices\Delta</delta>
            <volume>Migration\Step\ConfigurablePrices\Volume</volume>
        </step>
        <step title="Url Rewrite Step">
            <delta>Migration\Step\UrlRewrite\Version191to2000Delta</delta>
            <volume>Migration\Step\UrlRewrite\Version191to2000</volume>
        </step>
        <step title="Inventory Step">
            <delta>Migration\Step\Inventory\Delta</delta>
            <volume>Migration\Step\Inventory\Volume</volume>
        </step>
    </steps>
    <source>...</source>
    <destination>...</destination>
    <options>...</options>
</config>

安全地复制了产品和类别数据,我可以在数据库和管理员中看到它们。 URL 重写也能正常工作。但是,在某些(但不是全部)产品页面上,它显示了除名称之外的几乎所有产品数据,但页面标题为 404,并且在所有产品数据下方显示了 404 布局和 404 内容(见图).

因此,与大多数产品页面为 404ing 的问题不同,我知道这不是 URL 重写问题(如果我使用绝对 Magento 路径而不是 URL 重写,也会发生同样的情况路径)。我之前在另一个数据导入测试中发生过这种情况,当我查看数据库时,有分配给不再存在的旧属性集的产品,所以我删除了它们,re-indexed 并清除了缓存并修复了它。

我已经审查并确认分配给产品的所有属性集都是正确的。我有 re-indexed,多次清除缓存。这修复了一些产品,但不是大多数产品。我相信这是由于数据库中与产品相关的一些 incorrect/corrupt 数据而发生的,但我不知道如何诊断 where/where 以查看。我无法擦除所有内容并重新安装,因为我们需要保留数据。

有没有人以前遇到过这个问题,也许找到了解决方案或好方法来弄清楚是什么坏数据导致了这个问题?

对于可能遇到此问题的任何其他人,我已经解决了这个问题。在数据迁移中,我带来了类别、产品和 URL 重写。 URL 重写是通过正确的请求路径带来的,但它们的 ID 不同,因此它们以某种方式破坏了 Magento 路径并且页面都是 404ing。

当我进入某个产品时,将 URL 键更改为其他内容,然后又将其改回原处,它重新生成了正确的 URL 重写链接,并在 Magento 中正确链接并且页面正常运行没有 404ing.

这非常令人沮丧,尤其是因为在 Magento 2 中没有内置的方法来重新生成产品 url 重写。您必须手动删除所有 URL 重写和更新并重新保存产品才能正确重新生成它们。有趣的是,我在另一个项目上做了这个,其中 URL 重写被正确复制并且没有问题。我在这次迁移中验证了 url_rewrite table 是明确的,并且所有值都已导入,因此这个特定项目上的原始 Magento 1 url_rewrite 内容可能存在问题导致了这个问题。