По умолчанию PrestaShop не генерирует правила перенаправления на основе ваших изменений для обработки старых URL-адресов (которыми будет сложно управлять, особенно если вы вносите множественные изменения в строке).
Вам придетсязапустите одноразовый скрипт для генерации этих правил постоянного перенаправления (301).
Вот пример
В приведенном ниже коде предполагается, что ваши старые URL были в этом формате:/category/product
, при необходимости измените его.
<?php
include('config/config.inc.php');
include('init.php');
$context = Context::getContext();
$products = Db::getInstance()->ExecuteS('
SELECT p.id_product, pl.link_rewrite prod_url, cl.link_rewrite cat_url
FROM '._DB_PREFIX_.'product p
LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = p.id_product)
LEFT JOIN '._DB_PREFIX_.'category_lang cl ON (cl.id_category = p.id_category_default)
WHERE p.active = 1 AND cl.id_lang = 1 AND cl.id_shop = 1 AND pl.id_lang = 1 AND cl.id_shop = 1');
foreach ($products as $p)
{
$new_url = $context->link->getProductLink(new Product((int)$p['id_product']));
echo 'RewriteRule ^'.$p['cat_url'].'/'.$p['prod_url'].'$ '.$new_url.' [L,R=301]<br />';
}
Поместите этот скрипт в корневую папку PrestaShop и запустите его.Затем скопируйте и вставьте результат в свой файл .htaccess.
Вы также можете проверить этот связанный вопрос: PrestaShop - URL-адреса старых продуктов RedirectMatch (без идентификатора) переходят на новый URL-адрес
Надеюсь, это поможет!