Помогите мне понять, как боты Google находят ссылки на "идентификатор" продукта и как блокировать их без негативных последствий


Я периодически проверял инструменты Google для веб-мастеров и недавно заметил большое количество сообщений об ошибках 500 для ссылок на несуществующие страницы.

Пример:

http://www.mysite.com/eng/catalog/product/view/id/21826/s/URL_KEY/ RESPONSE CODE 500

ИДЕНТИФИКАТОР и URL-КЛЮЧ действительны сами по себе и правильно идентифицируют продукт. Продукт действительно существует, и если я изменю URL на:

http://www.mysite.com/eng/URL_KEY.html

Откроется страница. Использование идентификатора в бэкэнде также показывает правильный продукт.

Все ссылки на страницы продуктов во внешнем интерфейсе находятся в таком формате: http://www.mysite.com/eng/URL_KEY.html нет ссылки на какой-либо URL-адрес, который использует /каталог/продукт/просмотр/идентификатор/21826/s/URL_KEY/.

Как боты Google находят эти ссылки, если во внешнем интерфейсе нет ссылки?

Могу ли я безопасно запретить: /каталог/ в моем robots.txt чтобы избежать сообщения об ошибке в инструментах Google для веб-мастеров, не оказывая негативного влияния на мой сайт?

Спасибо!

 3
Author: Flyingmana, 2014-02-24

2 answers

Быстрое простое решение состоит в том, чтобы настроить robots.txt так, чтобы игнорировать родительский путь:

## Do not crawl seach pages and not-SEO optimized catalog links
Disallow: /catalogsearch/
Disallow: /catalog/product_compare/
Disallow: /catalog/category/view/
Disallow: /catalog/product/view/

Фрагмент из:

Чтобы ответить на ваш вопрос, как это сделать, поможет анализ указанного контроллера:

Файл: app/code/core/Mage/Catalog/controllers/ProductController.php

 /**
 * Product view action
 */
public function viewAction()
{
    // Get initial data from request
    $categoryId = (int) $this->getRequest()->getParam('category', false);
    $productId  = (int) $this->getRequest()->getParam('id');
    $specifyOptions = $this->getRequest()->getParam('options');

    // Prepare helper and params
    $viewHelper = Mage::helper('catalog/product_view');

    $params = new Varien_Object();
    $params->setCategoryId($categoryId);
    $params->setSpecifyOptions($specifyOptions);

    // Render page
    try {
        $viewHelper->prepareAndRender($productId, $this, $params);
    } catch (Exception $e) {
        if ($e->getCode() == $viewHelper->ERR_NO_PRODUCT_LOADED) {
            if (isset($_GET['store'])  && !$this->getResponse()->isRedirect()) {
                $this->_redirect('');
            } elseif (!$this->getResponse()->isRedirect()) {
                $this->_forward('noRoute');
            }
        } else {
            Mage::logException($e);
            $this->_forward('noRoute');
        }
    }
}

$specifyOptions было бы значением, за которым нужно следовать во время запроса.

Скорее всего, URL-адрес находится по сгенерированной ссылке sitemap.xml, в самом модуле SEO Sitemap catalog Magento Core есть /catalog/seo_sitemap/category/ или что-то в этом роде.

/s/ в вашем URL-адресе может означать, что виновником также может быть возможное альтернативное представление магазина.

Не уверен, на какой версии Magento вы находитесь. Если вы используете последнюю версию Magento CE или EE Я считаю, что последняя версия приводит к тому, что поколение Google sitemap sitemap.xml возвращает истинный путь контроллера, такой как ваш, а не url_key.

 4
Author: B00MER, 2017-04-13 12:54:58

Для этого лучше использовать канонический тег, поэтому всякий раз, когда Google индексирует http://www.mysite.com/eng/catalog/product/view/id/21826/s/URL_KEY/

У него должен быть канонический тег в голове, например

<link rel="canonical" href="http://www.mysite.com/eng/URL_KEY.html"/>

Вы можете включить канонические теги в разделе System > Configuration > Catalog > Use Canonical Link Meta Tag For Products

 3
Author: Sander Mangel, 2014-02-24 20:54:25