Magento:重写深度嵌套的类别页面

Magento:重写深度嵌套的类别页面,magento,url-rewriting,Magento,Url Rewriting,我们正在对我们的Magento商店进行一些SEO优化,我需要一些关于更改类别URL的最佳方法的建议。我们的SEO承包商希望更改以下URL: /base-cat/sub-cat1/sub-cat2.html 到 我们有一组嵌套的类别(5个顶级类别和一组多达4个级别的子类别)。由于这有助于我们的客户深入浏览主导航,因此我们不确定是否要更改类别层次结构。但我们可能会对100个左右的类别进行这些url更改 我知道我们可以使用301重写(使用.htaccess或Magento的内置重写模块)来完成部分

我们正在对我们的Magento商店进行一些SEO优化,我需要一些关于更改类别URL的最佳方法的建议。我们的SEO承包商希望更改以下URL:

/base-cat/sub-cat1/sub-cat2.html 

我们有一组嵌套的类别(5个顶级类别和一组多达4个级别的子类别)。由于这有助于我们的客户深入浏览主导航,因此我们不确定是否要更改类别层次结构。但我们可能会对100个左右的类别进行这些url更改


我知道我们可以使用301重写(使用.htaccess或Magento的内置重写模块)来完成部分工作,但是实现这一点的最佳方法是什么?我看到使用301s的缺点之一是,主导航的链接中将继续包含长的子类别url。我是否应该考虑创建一个自定义模块,允许我们为类别指定准确的url(而不是特定于层次结构的url标记)?您的建议是什么?

您很可能希望编写一个脚本来为您执行此操作,并将其保存在Magento的URL管理中,而不是在.htaccess或诸如此类的文件中列出一长串无法管理的重写/重定向

我认为,您最大的问题是存在相同文件名的任何冲突,以及您希望如何处理此类冲突

Mage::getModel('core/url_rewrite')
->setIsSystem(0)
->setStoreId($storeId)   
->setOptions('RP')  
->setIdPath('index.php?cat=c' . $categoryId . '_' . $this->strip($data['name']) . '.html')
->setTargetPath($categoryModel->getUrlPath() . '.html')
->setRequestPath('index.php?cat=c' . $categoryId . '_' . $this->strip($data['name']) . '.html')
->save();

这只是如何将重写添加到Magento的URL重写管理器中的示例。

请指定您使用的Magento版本?Magento 1.3.3。可能会在1.3.3版上运行一段时间,但我期待着在明年升级到更新的版本。是的,我想这是我想要的答案的开始。看起来我要为这个创建一个自定义模块了。这是一个“自定义url重写”的编程方式,对吗?就像你在后台做的一样?这些代码段应该添加到哪个文件中?
Mage::getModel('core/url_rewrite')
->setIsSystem(0)
->setStoreId($storeId)   
->setOptions('RP')  
->setIdPath('index.php?cat=c' . $categoryId . '_' . $this->strip($data['name']) . '.html')
->setTargetPath($categoryModel->getUrlPath() . '.html')
->setRequestPath('index.php?cat=c' . $categoryId . '_' . $this->strip($data['name']) . '.html')
->save();