Php 如何使用代码为旧url键创建永久重定向?

Php 如何使用代码为旧url键创建永久重定向?,php,magento,url-redirection,Php,Magento,Url Redirection,问题 我添加了一个新类别,其urlkey为“shoes”。发现此urlkey有问题,因为URL重定向将其链接到shoes-86。这是因为有几十种禁用/遗留产品具有相同的url密钥(shoes)。理解手动创建重定向会产生不良副作用。我的任务是使用脚本以编程方式解决它,并更改产品的所有urlkeys,以便magento能够自行修复重定向。这造成了一些问题 尝试的解决方案 目前我有这个代码,它不工作,它不创建重定向。假设下面的代码检索url键为black_canvas_sneakers的产品。它之所以

问题

我添加了一个新类别,其urlkey为“shoes”。发现此urlkey有问题,因为URL重定向将其链接到shoes-86。这是因为有几十种禁用/遗留产品具有相同的url密钥(shoes)。理解手动创建重定向会产生不良副作用。我的任务是使用脚本以编程方式解决它,并更改产品的所有urlkeys,以便magento能够自行修复重定向。这造成了一些问题

尝试的解决方案

目前我有这个代码,它不工作,它不创建重定向。假设下面的代码检索url键为black_canvas_sneakers的产品。它之所以这样做是因为它是我的测试产品,我希望在将脚本应用到整个数据库之前看到效果。这个脚本似乎只从默认商店中检索产品,没有其他商店出于某种奇怪的原因。我正在寻找解决方案的问题是,为什么这段代码不起作用,我该怎么做才能使它起作用

<?php

require 'app/Mage.php';
umask(0);
Mage::app()->setCurrentStore('0');



$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('url_key', 'black-canvas-sneakers');

foreach ($collection as $product) {
    $product->setData('save_rewrites_history', true)->save();

    break;
}

手动更改默认实体(如产品和类别)的url重写可能会产生不利影响。url索引器将重新创建您可能已删除/更改的记录

您已经描述了您的解决方案,但没有描述您试图解决的问题。首先,为什么要创建重定向

默认情况下,在管理员中更改
url\u键时,可以选择创建永久重定向

以编程方式更新
url\u键时也是如此

Mage::getModel('catalog/product')->load(905)
    ->setUrlKey('new-url-124')
    ->save();

增加了问题陈述
Mage::getModel('catalog/product')->load(905)
    ->setUrlKey('new-url-124')
    ->save();