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

ВЫГЛЯДИТ, что я отследил проблему с популярными результатами поиска magento, но я схожу с ума, пытаясь заставить их правильно перенаправлять.

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

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

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

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

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

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

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


person Robert    schedule 09.05.2011    source источник


Ответы (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).

person Jürgen Thelen    schedule 09.05.2011
comment
Да, я знаю, что вы можете указать некоторые перенаправления в разделе ADMIN, но они обычно зарезервированы для продуктов и категорий, верно? Или если вам нужно перенаправить на лету? - person Robert; 10.05.2011
comment
@Robert: я тестировал setRedirect($query->getRedirect(), 301); с внутренней и внешней переадресацией домена. Он работал как шарм, так что это не должно быть проблемой. - person Jürgen Thelen; 10.05.2011
comment
@Robert: да, обычно вы видите продукты и категории в управлении переопределением URL-адресов, но есть третий вариант Custom, который позволяет вам определять свои собственные перенаправления. Однако в качестве альтернативы я упомянул только управление перезаписью URL. Я предположил, что у вас уже есть или вы планируете расширить Mage_CatalogSearch_Model_Query полем http_code или другим флагом, который позволяет вам решать, когда 302, а когда 301 при совпадении определенного поискового запроса. - person Jürgen Thelen; 10.05.2011
comment
код действительно работал как шарм. Однако это не сработало в локальной папке, как я привык использовать при настройке Magento. Просто для проверки я сделал это в базовом коде в папке Mage, и это работает. Либо я не правильно реплицировал путь в коде › локальной папке, либо что-то еще происходит. - person Robert; 11.05.2011