Magento:删除产品并 301 重定向到相关的现有页面,例如,它的父类别

标签 magento

有人有针对 Magento 中已删除产品的 301 永久重定向的解决方案吗?

我有一家拥有 5000 种产品的商店。 4000 已售出,并且永远不会再有库存。我想删除这些产品,因为我不再需要它们,并且想要清理/减少我的数据库,但我需要 301 将它们永久重定向到适当的页面,以保留我已经建立的 SEO 效果。

需要明确的是,我不希望已删除的产品页面继续存在,即使出现“缺货”消息,也不希望出现 404 页面未找到。

理想情况下,我能够导出产品 URL 及其最低级别类别页面的 URL,以便我可以通过 .htaccess 文件创建 301 重定向。但是从 Magento 导出仅导出类别 ID,而不导出类别名称或 URL,那么如何以编程方式获取这些呢?或者其他解决方案?

最佳答案

我会创建一个利用观察者和 Magento 的 URL 重写管理器的插件。

此插件将观察 catalog_controller_product_delete 事件,该事件将 array('product' ⇒ $product) 返回到产品上的观察者的 $event var删除 - 这将在删除时创建自动重定向。

您可以使用它来获取有关产品的最新详细信息,包括其 URL,然后执行以下操作以插入 URL 重写:

Mage::getModel('core/url_rewrite')
    ->setIsSystem(0)
    ->setStoreId($storeId)   
    ->setOptions('RP')  //301 redirect perm
    ->setTargetPath($product->getUrlPath() . '.html')
    ->setRequestPath($newpage->getUrlPath() . '.html')
    ->save();

关于Magento:删除产品并 301 重定向到相关的现有页面,例如,它的父类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10392760/

相关文章:

应用了折扣代码的 Magento 小计/增值税错误 - PayPal 付款细目错误

mysql - 需要从 MySql 结果中修剪新行

Magento 网格列排序

magento - 从购物车中获取 magento 小计

magento - 如何获取Magento商店货币

magento - 如何在 Magento 的保存事件中扩展 CMS Block?

magento - Varnish 缓存清空 Magento 中的购物车

Magento 默认购物车数量 1 产品不是 0

magento - 如何更改 Magento 中媒体 URL 的默认图标

mysql - magento 'in' 条件?