Как перенаправить старые URL на новые в PrestaShop после изменения шаблонов SEO
Я изменил настройки схемы SEO в бэк-офисе PrestaShop (например, добавлен .расширение html для URL-адресов продуктов).
Теперь старые URL-адреса больше не работают, и они не перенаправляются на новые URL-адреса (те, с которыми .расширением HTML).
Я бы хотел, чтобы всякий раз, когда я изменяю настройки для URL-адресов продуктов или категорий, предыдущие URL-адреса перенаправляются на новые (301 постоянное перенаправление).
Какие-то решения?
Ответы - Как перенаправить старые URL на новые в PrestaShop после изменения шаблонов SEO / How to redirect old to new URLs in PrestaShop after modifying SEO patterns

30.05.2019 05:37:56
Для PrestaShop не важно, если URL заканчивается с/без .html, реальная проблема заключается в том, если вы удалили идентификатор в маршруте или изменили порядок идентификатора, если это ваш случай, вам нужно будет создать большой список перенаправлений (для каждой из категорий) в вашем .или такой пример:
Redirect 301 /3-my-old-category-url /my-new-category-url

30.05.2019 09:24:23
По умолчанию 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 продукта (без идентификатора) на новый url
Надеюсь, это поможет!