Oscommerce 到 OpenCart 重定向

Oscommerce to OpenCart Redirects

Oscommerce SEO Friendly URL 的工作方式是,它们是从产品或类别标题生成的,后跟代表产品的 p 和代表类别的 c,然后是产品或类别 ID。对于类别,还使用每个 parent 目录 ID。 例如:

https://example.com/jeep-pinion-gears-c-284_845.html

多年来,产品和类别得到编辑和移动,因此改变了 URL。但是,所有旧的 URL 仍然得到解决,因为页面是严格根据 URL 的最后一部分提供的。它会查找 c 或 p 以及 ID。 SEO还是可以维持的。 例如:

https://example.com/jeep-pinion-gears-c-284_845.html
https://example.com/jeep-pinion-gears-and-accessories-c-284_845.html
https://example.com/jeep-pinion-gears-c-284_1234_845.html
https://example.com/ring-pinion-gears-c-845.html

将加载相同的内容。

我最近改用了 OpenCart,在这里我对 OsCommerce 商店的每个产品和类别使用了最新的 URL。但是,所有 Old Oscommerce URL 都不起作用。

我最初是在编写一些正则表达式重定向来匹配 ID,但我 运行 遇到了重定向循环问题。

有人对不同的方法有任何想法吗?

如果有办法从您的 OsCommerce SEO URLs

派生新的 OpenCart URL
RewriteCond %{REQUEST_URI} !^/.*?-[cp]-\d+\.html$
RewriteCond %{REQUEST_URI} ^/(.*?)-([cp])-[\d_]*?(\d+)\.html$  [NC]
RewriteRule (.*) https://new.example.com/%2-%3.php [R=301,L]

这里的重要部分是防止循环重定向的 stop not 规则。

把它放在别人重写的下面,删除尾部的斜杠或 www-子域,或者 httphttps 重写。

如果两个 URL 之间没有三个 "simple relationship",那你就运气不好了,必须为它们中的每一个都写一个重定向。您应该能够使用存储在数据库中的 SEO URL 生成规则。

Redirect 301 /old-page.html http://www.example.com/new-page.html

也许 PHP 重定向也有帮助?

header("Location: http://www.example.com/new-page.html", true, 301);
exit();