首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在修改搜索引擎优化模式后在PrestaShop中将旧URL重定向到新URL

如何在修改搜索引擎优化模式后在PrestaShop中将旧URL重定向到新URL
EN

Stack Overflow用户
提问于 2019-05-30 16:43:11
回答 2查看 858关注 0票数 1

我已经在PrestaShop后台更改了SEO模式设置(例如,为产品URL添加了.html扩展)。

现在,旧的URL不再起作用,它们不会重定向到新的URL(具有.html扩展名的URL)。

我希望每当我更改产品或类别URL的设置时,以前的URL都会被重定向到新的URL (301个永久重定向)。

有什么解决方案吗?

EN

回答 2

Stack Overflow用户

发布于 2019-05-30 22:37:57

如果网址以/不以.html结尾,对于PrestaShop并不重要,真正的问题是如果您删除了路由中的ID或更改了ID的顺序,如果是您的情况,您将需要在.htaccess中创建一个大的重定向列表(针对每个类别),如下例所示:

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

票数 2
EN

Stack Overflow用户

发布于 2019-05-31 02:24:24

默认情况下,PrestaShop不会根据您的更改生成重定向规则来处理旧的URL(这将很难管理,特别是在您连续进行多次更改的情况下)。

您将必须启动一次性脚本来生成这些永久重定向规则(301)。

这里有一个示例

下面的代码假设您的旧URL采用以下格式:/category/product,如果需要,请对其进行调整。

代码语言:javascript
复制
<?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 - RedirectMatch old product urls (without ID) to new url

我希望这能帮到你!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56374678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档