ПОЛНАЯ SEO оптимизация онлайн магазина на opencart 2.0

Тема в разделе "Инструкции и FAQ", создана пользователем Slait, 28 май 2015.

  1. Slait

    Slait Эксперт

    Сообщения:
    503
    Симпатии:
    456
    Решил написать инструкцию для людей, которую я делаю для каждого онлайн магазина.

    1. После установки обязательно включите SEO (система- Настройка- Сервер - Тип ЧПУ – Включаем)
    01.png




    2. .Htaccess

    Код:
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\ HTTP/
    RewriteRule ^index\.html$ / [R=301,L]
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    RewriteRule ^index\.php$ / [R=301,L]
    RewriteCond %{QUERY_STRING} ^route=common/home$
    RewriteCond %{REQUEST_METHOD} !^POST$
    RewriteRule ^index\.php$ http://%{HTTP_HOST}? [R=301,L]


    3. Ставим дополнительный модуль для SEO. Это может быть SEOPRO или любой другой. Я советую Complete SEO 55$

    Настройки Complete SEO
    03-1.png

    3.2 Если сайт мультиязычный делаем так, если обычный не отрогаем
    03-2.png

    3.3. Если сайт мультиязычный включаем, если нет не трогаем
    03-3.png

    3.4 Заполняем данные для главной страницы (title, Meta Description, Meta Keywords). Если несколько языков, заполняем и их.
    03-4.png

    3.5 Настройки хлебных крошек
    03-5.png

    3.6 Для Вашего удобства есть (SEO редактор) - таблица где вы можете прописать URL, Title, Meta Description, Meta Keywords и другие значения). Заполните все по максимуму и исключите дубли. Аналогично делаем для Категорий, товаров, Статей, Производителей. Проверить результат можна на (http://audit.megaindex.ru или http://saitreport.ru за $)
    03-6.png

    3.7 Создаем короткие URL в разделе SEO редактор - Стандартные страницы.
    Код:
      'route=account/account' => 'my-account',
            'route=account/address' => 'address-book',
            'route=account/edit' => 'edit-account',
            'route=account/forgotten' => 'forgot-password',
            'route=account/login' => 'login',
            'route=account/logout' => 'logout',
            'route=account/newsletter' => 'newsletter',
            'route=account/order' => 'order-history',
            'route=account/password' => 'change-password',
            'route=account/register' => 'create-account',
            'route=account/return' => 'returns',
            'route=account/return/insert' => 'request-return',
            'route=account/reward' => 'reward-points',
            'route=account/transaction' => 'transactions',
            'route=account/wishlist' => 'wishlist',
            'route=checkout/cart' => 'shopping-cart',
            'route=checkout/checkout' => 'checkout',
            'route=checkout/simplecheckout' => 'cart',
            'route=checkout/voucher' => 'gift-vouchers',
            'route=common/home' => '/',
            'route=information/sitemap' => 'sitemap',
            'route=product/compare' => 'compare-products',
            'route=product/manufacturer' => 'brands',
            'route=product/search' => 'search',


    4.Задаем шаблон для title. У меня title повторяется, меняется только название и артикул товара. Открывает файл
    Код:
    vqmod\xml\seo_package.xml
    , находим
    Код:
    $this->document->setTitle(!empty($product_info['meta_title'])
    и делаем все что угодно. у меня строчка выглядит так:

    Код:
    $this->document->setTitle(!empty($product_info['meta_title']) ? $this->language->get('title01') .' '. $product_info['meta_title'].', '.$this->language->get('title02').' '. $product_info['model'] .' - '. $this->language->get('title03') .' '. mb_substr($product_info['price'], 0, -5) : $product_info['name']);
    4.1.
    Код:
    $this->language->get('title01') 
    - Прописанная фраза в
    Код:
    /catalog/controller/product/product.php
    Код:
    $data['title01'] = $this->language->get('title01');
    и
    Код:
    catalog/language/russian/product/product.php 
    Код:
    $_['title01']                                    = 'Купить';
    Если у Вас сайт на 1 языке можете смело писать в коде

    4.2.
    Код:
    .' '.
    - Пробел

    4.3
    Код:
    $product_info['model']
    - Модель товара (артикул)

    4.4
    Код:
    mb_substr($product_info['price'], 0, -5)
    - Обрезаная цена товара
    В итоге у меня получается
    Вы так же можете добавить рубль или другую валюту ручками.
    У меня вопрос к экспертам, как добавить сюда Валюту (переменную title т.е. Рубль или US dollar) Буду благодарен.



    5. Добавляем сайт в webmaster google, webmaster yandex, webmaster bing, webmaster mail.ru, nigma.ru



    6. Карта сайта. Можно пользоваться стандартной, если мультиязычный сайт советую "SEO Package Sitemap". Добавляем карту сайта во все поисковые системы. Для крупных проектов советую Sitemap Paladin



    7. Ищем или покупаем модуль (Яндекс.YML) для yandex маркета, добавляем сайт в Маркет, это улучшить сниппет.



    8. Добавляем счетчики yandex метрики и google analitics.



    9. Добавляем микроразметку сайта (https://www.google.com/webmasters/markup-helper/?hl=ru). Делаем. Проверяем в (https://developers.google.com/structured-data/testing-tool/) или (https://webmaster.yandex.ru/microtest.xml?utm_source=wm)
    09.png



    10. Избавляемся от внешних ссылок
    Добавляем JS код
    Код:
    <script>
      +function ($){
    $(document).ready (function (){
    $('.netsilok').replaceWith (function (){return'<a onclick="return !window.open (this.href)" href="'+$(this).data ('link')+'" title="'+$(this).text ()+'">'+$(this).html ()+'</a>';});
    });
    }(jQuery);
    </script>
    Теперь все внешние ссылки нужно привести к виду
    Код:
    <span class="netsilok" data-link="http://nonprice.ru/" rel="tag">Скидка и акции в Красноярске</span>
    В итоге вместо ссылок делаем Span и добавляем class="netsilok"

    Реализовываем и радуемся. Проверить внешние ссылки можно на (http://audit.megaindex.ru или http://saitreport.ru за $)



    11. Проверяем орфографию. Проверить можно на http://saitreport.ru за $



    12. Скорость сайта.
    12.1 Проверяем https://developers.google.com/speed/pagespeed/insights/ (устраняем, ужимаем) Проблема с кешем решается добавлением в .htaccess (если не работает решайте с Хостингом)

    Код:
    php_value session.cookie_domain .ВАШ-ДОМЕН.ru
                php_value max_input_vars 4000
    
       
    <IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access 1 year"
    ExpiresByType image/jpeg "access 1 year"
    ExpiresByType image/gif "access 1 year"
    ExpiresByType image/png "access 1 year"
    ExpiresByType text/css "access 1 month"
    ExpiresByType text/html "access 1 month"
    ExpiresByType application/pdf "access 1 month"
    ExpiresByType text/x-javascript "access 1 month"
    ExpiresByType application/x-shockwave-flash "access 1 month"
    ExpiresByType image/x-icon "access 1 year"
    ExpiresDefault "access 1 month"
    </IfModule>
    
    12.2 Проверяем сайт http://gtmetrix.com. Показатель сайта должен быть минимум 80. Ужимаем, можно с сайта брать готовые CSS, JS (не забывайте делать резервную копию оригинальных файлов) и картинки

    2015-06-07 23-58-38 Скриншот экрана.png

    12.3 Проверяем сайт http://tools.pingdom.com



    13. Подаем заявки в yandex каталог



    14. Добавляем сайт в yandex Адреса и организации(https://webmaster.yandex.ru/site/addresses.xml) и google мой бизнес.(https://www.google.com/business/). От google ждем бумажное письмо.



    15. Оптимизируем страницы под запросы. http://audit.megaindex.ru/audit/relevant_page/ Пишем запрос и страницу. Оптимизируем и закупаем ссылки.



    16. Ищем и устраняем ошибки верстки http://validator.w3.org



    17. Хлебные крошки.
    Удаляем ссылку на самого себя. для этого:

    я создал бесплатный модуль который решает 17 пункт + добавляет микроразметку.
    http://forum.opencart-russia.ru/threads/xlebnye-kroshki.2424/

    18. Решение ошибки пагинации.
    Как известно есть косяк в opencart, что страница http://ваш сайт.рф/category/
    и http://ваш сайт.рф/category/?page=1 это одна страница.
    Решение данной проблемы установка бесплатного модуля
    Скачать

    19. Дубли категории
    Когда у Вас много страниц с товарами у Вас появляются дубли страница 1, страница 2 и так далее. Данный модуль решает проблему с дублями title, плюс он удаляет описание для второй и последующих.
    Скачать
    Ставим модуль и радуемся. Внимание если вы используете другой способ модификации title проверьте, что бы не конфликтовал.

    Если у Вас есть, что дополнить пишите пополню список.

    В среднем на проект уходит от 5-60 дней (Все зависит от кол-во материала)
     

    Вложения:

    • 12.png
      12.png
      Размер файла:
      50,8 КБ
      Просмотров:
      776
    Последнее редактирование: 16 авг 2017
    Gralexxx, Nuarro, Maxon и 11 другим нравится это.
  2. DeCeRt

    DeCeRt Новичок

    Сообщения:
    18
    Симпатии:
    7
    На самом деле этот момент решается очень просто. Менять тайтл и убирать текст совсем не обязательно. Я делаю следующим образом:

    а) На первой странице пагинации (по адресу корня разделе /):
    <meta name="robots" content="index, follow"/> (страница будет полностью индексируема)
    <link rel="canonical" href="http://адрес раздела или подраздела"/> (думаю, понятно)
    <rel="next" href="http://страница №2"/> (указатель на то, что есть постраничка и куда идти дальше)
    б) На второй странице пагинации:
    <meta name="robots" content="noindex, follow"/> (не индексируем контент, так как текст не убран, но полностью индексируем ссылки, чтобы грамотно распределить веса страниц)
    <link rel="canonical" href="http://адрес страницы №2"/>
    <rel="next" href="http://страница №3"/>
    <rel="prev" href="http://адрес корня раздела или подраздела"/>
    в) На третьей и последующих страницах пагинации (N):
    <meta name="robots" content="noindex, follow"/>
    <link rel="canonical" href="http://адрес страницы N"/>
    <rel="next" href="http://страница N+1"/>
    <rel="prev" href="http://страница N-1"/>
    г) Последняя страница пагинации:
    <meta name="robots" content="noindex, follow"/>
    <link rel="canonical" href="http://адрес последней страницы"/>
    <rel="prev" href="http://предыдущая страница пагинации"/>

    Это полностью позволяет решить проблему. Проверено на десятках магазинов клиентов.
     
  3. Slait

    Slait Эксперт

    Сообщения:
    503
    Симпатии:
    456
    А код реализации можно увидеть?
     
  4. Slait

    Slait Эксперт

    Сообщения:
    503
    Симпатии:
    456
    Добавил 17 пункт с хлебными крошками, который уменьшит ссылки на самого себя. (Циклические ссылки)
     
  5. Pa3uH

    Pa3uH Новичок

    Сообщения:
    8
    Симпатии:
    2
    Slait, cпасибо за статью, все разжевано и разложено по полочкам Подскажите, он корректно работает на версии 2.0.1.1 (rs.7), а то установился нормально, без ошибок, главная страница открывается без проблем, но переходя по ссылкам, получаю либо:

    Parse error
    : syntax error, unexpected T_ELSE in vqmod/vqcache/vq2-catalog_controller_common_seo_url.php on line 243
    или
    Fatal error: Call to undefined method ControllerCommonSeoUrl::forward() in там же.

    Как победить?

    ЗЫ: Вопрос снят. Победил :). Еще раз спасибо!
     
    Последнее редактирование модератором: 29 май 2015
  6. Zlata Jesen

    Zlata Jesen Продвинутый пользователь

    Сообщения:
    165
    Симпатии:
    98
    @Slait , вопрос от новичка в SEO - чего прям так уж критично не хватает в opencart, что надо ставить seo-модуль?
    ЧПУ есть, тайтлы и дескрипшены можно прописать на всех страничках ручками, внутренние страницы типа кабинета не индексируются, сайт у меня не мультиязычный... Я к тому, что если я все это "ручками" буду вбивать - то может и без модуля обойдусь?
     
    Romans нравится это.
  7. Slait

    Slait Эксперт

    Сообщения:
    503
    Симпатии:
    456
    Основная проблема opencart по умолчанию это отсутствие тега canonical
    Данный тег помогает удалять дубли. Подробнее есть в интернете.

    Данный модуль внедрялся для мультиязычного сайта. Основные его плюсы это hreflang и отдельная категория для /en/ версии. + пункт 3.7 (он в SEO PRO их так же можно прописать в SQL)

    Все те же функции есть в SEO PRO (он бесплатный)

    В 1.5.6.4 я работал с SEO PRO + SEO PACK (В нем использовал только таблицу тегов, аналог пункт 3.6)
     
    Zlata Jesen нравится это.
  8. Zlata Jesen

    Zlata Jesen Продвинутый пользователь

    Сообщения:
    165
    Симпатии:
    98
    То есть, если сайт не мультиязычный, то модуль не обязателен, я правильно поняла?

    Странно... а почему у меня на всех страницах есть canonical без всяких модулей?
     
    Slait нравится это.
  9. Slait

    Slait Эксперт

    Сообщения:
    503
    Симпатии:
    456
    О ты сделала для меня открытие. Оказывается в 2.0 они внедрили canonical. o_O
    Да, если сайт не мультиязычный, он тебе не нужен.
     
    Zlata Jesen нравится это.
  10. Zlata Jesen

    Zlata Jesen Продвинутый пользователь

    Сообщения:
    165
    Симпатии:
    98
    Спасибо. По остальному все понятно, а сайт мегаиндекса вообще стал для меня открытием :)
     
  11. tsap

    tsap Продвинутый пользователь

    Сообщения:
    230
    Симпатии:
    131
    они - это наверное заслуга Romans
     
  12. Slait

    Slait Эксперт

    Сообщения:
    503
    Симпатии:
    456
  13. Slait

    Slait Эксперт

    Сообщения:
    503
    Симпатии:
    456
    Обновил информацию о закрытие внешних ссылок (пункт 10). Сохраняйте вес страниц и поднимайтесь выше к TOP 1.
     
  14. VIk

    VIk Новичок

    Сообщения:
    21
    Симпатии:
    0
    Подскажите пожалуйста.
    Допустим, я настроил автозаполнение тайтла, дескрипшена и кейвордс и начал заливать на сайт про продаже кирпичей 10 видов кирпичей
    Добавил.
    На следующий день мне пришло в голову добавить еще и 20 видов бетона. Если я перезаполню стандарты заполнения тайтла и тд, не перезапишутся ли все эти данные к ранее добавленным товарам (кирпичам) ?
     
  15. Slait

    Slait Эксперт

    Сообщения:
    503
    Симпатии:
    456
    Если ты используешь автозамену, возможно потрет все старые.
     
  16. LehaLebed

    LehaLebed Пользователь

    Сообщения:
    91
    Симпатии:
    12
    вопрос такой:
    решил поставить seo pro (бесплатный), установил на версию магазина 2.0.3.1 (rs.2). в настройках включил ЧПУ. дальше иду искать файл Htaccess но в корне сайта нет ни Htaccess.txt ни .Htaccess. Как быть?

    думал сначала из за локального размещения сайта, залил на хостинг, все равно даже проблема. не понимаю как быть
     
  17. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    641
    корень - это где двиг установлен с файлами index, robots итд
     
  18. LehaLebed

    LehaLebed Пользователь

    Сообщения:
    91
    Симпатии:
    12
    повторюсь, ни в корне, ни в другой любой директории нет файла Htaccess.txt ни .Htaccess
     

    Вложения:

  19. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    641
    значит так копировали или у вас он скрывается почему то. Возьмите из дистрибутива файл и скопируйте.. делов то.

    Да и не понятно зачем вам сеопро, когда в штатном варианте все хорошо работает и отлажено. (за исключением любителей длинных урль.)
     
  20. LehaLebed

    LehaLebed Пользователь

    Сообщения:
    91
    Симпатии:
    12
    Не подумал воспользоваться оригинальным дистрибутивом.
    Решил воспользоваться вашим советом, скопировал оригинальный файл Htaccess.txt к себе на хостинг, зашел в настройки и включил ЧПУ (стандартный, до этого удалил seo pro). переименовал файл в .Htaccess, очистил кэш в system/cache, обновил модификаторы, но проблема та же: при переходе в категорию или товар

    Not Found

    The requested URL /opencart/test was not found on this server.

    попробовал сделать тоже самое но с seopro все равно не находит категорию и товар, уникальные УРЛ в категориях и товар прописаны, и вроде они вообще создаются автоматически при создании категории и товара (пробывал даже менять на новые, не выходит). Уже второй день не могу разобраться, подскажите в каком русле рыть