Magento: переписывает глубоко вложенные страницы категорий - PullRequest
3 голосов
/ 04 февраля 2011

Мы проводим некоторые SEO-оптимизации в нашем магазине Magento, и мне нужен совет, как лучше изменить URL категории. Наши SEO-подрядчики хотят изменить несколько URL-адресов:

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

до

/seo-friendly-cat2.html.

У нас есть куча вложенных категорий (5 верхних уровней и куча подкатегорий глубиной до 4 уровней). Так как это помогает нашим клиентам детализировать основную навигацию, мы не уверены, хотим ли мы изменить иерархию категорий. Но мы могли бы делать эти изменения URL на 100 категориях или около того.

Я знаю, что мы можем сделать это частично, используя 301 переписывание (используя .htaccess или встроенный модуль перезаписи Magento), но Каков наилучший способ для этого? Один из недостатков, которые я вижу использование 301s заключается в том, что основная навигация будет по-прежнему иметь длинный URL-адрес подкатегории в своей ссылке. Стоит ли смотреть на создание собственного модуля, который позволяет нам указывать точный URL для категорий (а не URL-токен, специфичный для иерархии)? Какой ваш совет?

1 Ответ

4 голосов
/ 08 февраля 2011

Скорее всего, вы захотите написать скрипт, который сделает это за вас, и сохранить его в управлении URL-адресами Magento вместо какого-то длинного неуправляемого списка переписываний / перенаправлений в .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();

Это всего лишь пример того, как добавить перезапись вМенеджер перезаписи URL Magento.

...