Популярные результаты поиска Magento — Как заставить их выполнять 301 перенаправление при настройке перенаправления в Admin

#magento #mage

#magento #mage

Вопрос:

Похоже, я отследил проблему, с которой у меня возникли результаты поиска magento popular, но я схожу с ума, пытаясь заставить их перенаправлять должным образом.

Хорошо, вот ситуация. Я не возражаю против популярных запросов результатов поиска Magento в индексе SE. Часто клиент вводит что-то, что может быть полезно для поиска. Моя проблема заключается в том, что клиент вводит в строку поиска те же термины, что и категория или продукты. Это создает проблемы с дублирующимся контентом, поэтому я перенаправляю эти условия запроса в Magento Admin.

Однако эти перенаправления представляют собой 302 временных перенаправления, хотя на самом деле их должно быть 301.

Я отыскал файл в Mage> CatalogSearch > контроллеры > ResultController.php в строке 65 приведен следующий код

 if ($query->getRedirect()){
                $query->save();
                $this->getResponse()->setRedirect($query->getRedirect());                    
                return;
            } 
  

Я думаю, что где-то здесь должно быть
->setHttpResponseCode(301)

Но пока я нигде не могу получить ответ на перенаправление 301.

Я, конечно, могу сделать это в htaccess, но это было бы намного проще, если установить программно.

Ответ №1:

Если вы уверены, что if блок действительно вводится, этот должен сработать:

 if ($query->getRedirect()){
    $query->save();
    $this->getResponse()->setRedirect($query->getRedirect(), 301);                    
    return;
}
  

Я предполагаю, что это $this->getResponse() содержит Mage_Core_Controller_Response_Http экземпляр. Посмотрите на его метод суперкласса Zend_Controller_Response_Abstract::setRedirect() .

Редактировать:

Если вы хотите определить постоянные перенаправления с помощью серверной части, перейдите Catalog -> URL Rewrite Management -> Edit URL Rewrite -> Redirect -> Permanent (301) .

Комментарии:

1. Да, я знаю, что вы можете указать некоторые перенаправления в разделе АДМИНИСТРАТОРА, но они обычно зарезервированы для продуктов и категорий, верно? Или если вам нужно перенаправлять на лету?

2. @Robert: Я тестировал setRedirect($query->getRedirect(), 301); с перенаправлениями внутреннего и внешнего доменов. Это сработало как заклинание, так что это не должно быть проблемой.

3. @Robert: да, обычно вы увидите товары и категории в разделе Управление перезаписью URL, но есть третий вариант Custom , который позволяет вам определять собственные перенаправления. Однако я упомянул управление перезаписью URL только в качестве альтернативы. Я предположил, что у вас уже есть или планируете расширять Mage_CatalogSearch_Model_Query с помощью поля http_code или другого флага, который позволяет вам решать, когда использовать 302, а когда 301 при сопоставлении определенного поискового запроса.

4. код действительно сработал как по волшебству. Однако это не сработало в локальной папке, которую я привык использовать при настройке Magento. Просто для тестирования я сделал это в базовом коде в папке Mage, и это действительно работает. Либо я неправильно повторил путь в code> local folder, либо происходит что-то еще.