我们正在从旧的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加入来获得所需的信息?
答案 0 :(得分:1)
“我想的可能是生成.htaccess文件的PHP脚本”
如果您打算这样做,我建议将重定向放在httpd include而不是.htaccess中,使用.htaccess会有性能损失 - 在这方面,include可能会更好。
此外,如果您要使用php将id映射到永久链接:
header ('HTTP/1.1 301 Moved Permanently');
header ('Location: '.$yourNewLocation);
我不是百分百确定你的计划是“最好的方式”,但它确实听起来合理。(当然,使用php +数据库调用动态重定向将比枯萎.htaccess或包含更多。方法!)