Как перенаправить старые URL на новые в PrestaShop после изменения шаблонов SEO

Как перенаправить старые URL на новые в PrestaShop после изменения шаблонов SEO

30.05.2019 11:43:10 Просмотров 55 Источник

Я изменил настройки схемы 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

Rolige

30.05.2019 05:37:56

Для PrestaShop не важно, если URL заканчивается с/без .html, реальная проблема заключается в том, если вы удалили идентификатор в маршруте или изменили порядок идентификатора, если это ваш случай, вам нужно будет создать большой список перенаправлений (для каждой из категорий) в вашем .или такой пример:

Redirect 301 /3-my-old-category-url /my-new-category-url

Bruno Leveque

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

Надеюсь, это поможет!

Закрыть X