Как перенаправить старые на новые URL в PrestaShop после изменения шаблонов SEO - PullRequest
1 голос
/ 30 мая 2019

Я изменил настройки схемы SEO в бэк-офисе PrestaShop (например, добавил расширение .html для URL-адресов продуктов).

Теперь старые URL-адреса больше не работают и не перенаправляются нановые URL-адреса (с расширением .html).

Мне бы хотелось, чтобы при изменении настроек для URL-адресов продуктов или категорий предыдущие URL-адреса перенаправлялись на новые (301 постоянных перенаправлений).

Какие-нибудь решения?

Ответы [ 2 ]

2 голосов
/ 30 мая 2019

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

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

1 голос
/ 30 мая 2019

По умолчанию 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-адрес

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

...