301重定向旧的osCommerce链接的最佳方式

时间:2011-07-24 23:55:40

标签: php apache wordpress .htaccess oscommerce

我们正在从旧的osCommerce安装迁移到WordPress。 90%的流量来自有机结果,超过4,000个索引产品页面,重定向到新网站至关重要。

旧网站的网址结构:

/product_info.php?cPath=1&products_id=4

其中cPath => osCommerce类别和products_id就是这样。这两个都包含在osCommerce DB

新网站:

/categoryname/product-title

将所有这些网址动态填充到正确位置的最佳方法是什么,因为我们正在从ID转移到永久链接?我想也许是一个生成.htaccess文件的PHP脚本,有没有人有这方面的经验?我可以将类别ID映射到正确的WordPress类别slug,并抓取旧网站以使旧产品URL与产品标题相匹配。这是最好的方式/甚至可能吗?在这里敲我的头撞墙。

我看过这个,但它不适用,因为我试图动态地重定向所有旧产品,或者至少动态生成重定向(就像我说的,大约5000个产品) Rewrite htaccess old oscommerce links


编辑:我的想法:

1。创建.htaccess文件。

RewriteCond %{REQUEST_URI}  ^/product_info\.php$
RewriteCond %{QUERY_STRING} ^cPath=([0-9]+)&products_id=([0-9]+)
RewriteRule ^(.*)$ http://www.domain.com/redirect.php?cat=%1&product=%2? [R=301,L]

2。它将所有匹配的请求发送到自定义的php 301重定向脚本

3。脚本包含已映射到正确数据库值的category_names => id pairs数组(无数据库调用),以及products_names => product_ids

的单独数组

4。在匹配类别和产品信息后,脚本会将您推送到正确的位置:

$yourNewLocation = $cat . '/' . $product . '/';
function return_301($yourNewLocation){
   header ('HTTP/1.1 301 Moved Permanently');
   header ('Location: '. $yourNewLocation);
}

可能的瓶颈:5000+的关联数组?是一个主要的瓶颈vs一个mysql加入来获得所需的信息?

1 个答案:

答案 0 :(得分:1)

“我想的可能是生成.htaccess文件的PHP脚本”

如果您打算这样做,我建议将重定向放在httpd include而不是.htaccess中,使用.htaccess会有性能损失 - 在这方面,include可能会更好。

此外,如果您要使用php将id映射到永久链接:

header ('HTTP/1.1 301 Moved Permanently');
header ('Location: '.$yourNewLocation);

我不是百分百确定你的计划是“最好的方式”,但它确实听起来合理。(当然,使用php +数据库调用动态重定向将比枯萎.htaccess或包含更多。方法!)