書き換えられたURLが見つからないため、誤ったURLが生成されます。おそらく、store_idが正しくないことが原因です。例えば:
$id = 290;
Mage::app()->setCurrentStore('default');
echo "store_id: ".Mage::app()->getStore()->getId()."<br>";
$url = Mage::helper('catalog/product')->getProductUrl($id);
echo $url."<br>";
//change store id
Mage::app()->setCurrentStore('admin');
echo "store_id: ".Mage::app()->getStore()->getId()."<br>";
$url = Mage::helper('catalog/product')->getProductUrl($id);
echo $url."<br>";
結果:
store_id: 1
http://local.com/surestep-pro-diabetic-test-strips-50-strips-professional-care.html
store_id: 0
https://local.com/index.php/catalog/product/view/id/290/s/surestep-pro-diabetic-test-strips-50-strips-professional-care/
正しいURL書き換えは、core_url_rewriteという名前のテーブル(store_idに関する情報を含む)にあります。
core_url_rewriteで一致する値が見つかった場合は、「正しいURL」が生成されます。それ以外の場合は、product_id+urlキー+category_idが連結されます。
$routePath = 'catalog/product/view';
$routeParams['id'] = $product->getId();
$routeParams['s'] = $product->getUrlKey();
if ($categoryId) {
$routeParams['category'] = $categoryId;
}