SlideShare a Scribd company logo
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
SSEEOO--ооппттииммииззииррооввааннннааяя 
ммииггрраацциияя ддаанннныыхх вв DDrruuppaall 
Sergey Miroshnichenko 
Developer 
Adyax 
smiroshnichenko@adyax.com
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
http://site.com/en 
http://site.com/fr 
http://site.com/ua 
http://en.site.com 
http://fr.site.com 
http://ua.site.com 
http://en.m.site.com 
http://fr.m.site.com 
http://ua.m.site.com
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
План действий 
1. Анализ структуры данных и ЧПУ 
2. Анализ источников трафика 
3. Создание новой структуры 
4. Подготовка данных 
5. Миграция данных 
6. Настройка переадресации 
7. Внутренняя SEO-оптимизация 
8. Запуск 
9. Анализ последствий
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
Анализ структуры данных и ЧПУ 
http://site.com/en?c=front&m=brand&bid=767&d=true 
Имя модели ID модели Расширенная версия 
Текущий язык 
Имя контроллера
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
fr?c=author&uid=33 
en?c=category&id=77 
ua?c=search&query=apple 
en?pid=758 
Top pages 
3000 
3000 
5000 
8000 
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 
Hits 
External links 
Анализ источников трафика
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
Создание новой структуры 
id brand model description details 
Integer Integer text Longtext Serialized 
$taxonomy_term->field_source_id 
$taxonomy_term->field_old_url 
$node->field_source_id 
$node->field_old_url 
$field_collection->source_id 
$field_collection->field_old_url
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
Подготовка данных 
1. Установка и настройка инструментов миграции 
2. Настройка обработки полей, содержащих html (внешние и внутренние ссылки, 
изображения, преобразование html-тегов) 
3. Настройка обработки полей мета-тегов 
4. Настройка переноса файлов
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
Миграция данных
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
Настройка переадресации 
Доступные решения 
Varnish Nginx Apache Drupal 
HTTP accelerator HTTP proxy HTTP back end server Application
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
Настройка переадресации 
Средства сервера 
1. www / non-www 
2. Неиспользуемые субдомены 
3. Статика
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
Настройка переадресации 
Средства Drupal 
1. Для главной страницы — версия сайта и языковый субдомен. 
Решение: Средства сервера или JavaScript (User-agent, Cookies). 
2. Для внутренних страниц — адрес, версия сайта и субдомен. 
Решение: Модуль Redirect и JavaScript.
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
Настройка переадресации 
Модуль Redirect (https://www.drupal.org/project/redirect) 
1. «Destination language» field 
2. Operations hooks: 
 hook_redirect_insert() 
 hook_redirect_update() 
 hook_redirect_delete() 
3. Processing hooks: 
 hook_redirect_load() 
 hook_redirect_alter()
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
Настройка переадресации 
Миграция адресов 
Source 
Base url, query params, 
language 
Destination 
System path, query params, 
fragment, language
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
Настройка переадресации 
Переадресация «на лету» по маске 
Page not found - 404 
redirect_get_current_redirect() 
drupal_get_query_parameters() 
drupal_goto()
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
Настройка переадресации 
С помощью JavaScript 
Проверить наличие Cookie версии сайта 
Есть 
Перенаправить 
Нет 
Записать Cookie Определить устройство
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
Внутренняя SEO-оптимизация 
Семантика 
1. HTML-разметка 
2. Микроразметка 
3. Open Graph теги
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
Внутренняя SEO-оптимизация 
Индексация 
1. Мета-теги 
2. Pathauto 
3. Canonical URL 
4. Robots.txt 
5. XML Sitemap 
6. Global Redirect
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
Внутренняя SEO-оптимизация 
Alternate-теги 
1. В теле страницы 
<link hreflang="fr" href="http://fr.site.com/" rel="alternate"> 
<link media="only screen and (max-width: 640px)" href="http://fr.m.site.com/" rel="alternate"> 
2. В XML-карте сайта 
<xhtml:link hreflang="fr" rel="alternate" href="http://fr.site.com"/> 
<xhtml:link rel="alternate" media="only screen and (max-width: 640px)" href="http://fr.m.site.com"/>
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
Запуск
Lviv EEuurroo DDrruuppaallCCaammpp 22001144 
Анализ последствий 
1. Google webmaster tools 
2. Google Analytics 
3. Server logs 
4. Application logs.

More Related Content

Viewers also liked

Анатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to zАнатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to z
LEDC 2016
 
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.LEDC 2016
 
Чеботарь Кирилл - Panels - пособие для начинающих
Чеботарь Кирилл - Panels - пособие для начинающихЧеботарь Кирилл - Panels - пособие для начинающих
Чеботарь Кирилл - Panels - пособие для начинающих
LEDC 2016
 
Караиванов Георгий - Drupal в проектах Электронного правительства
Караиванов Георгий - Drupal в проектах Электронного правительстваКараиванов Георгий - Drupal в проектах Электронного правительства
Караиванов Георгий - Drupal в проектах Электронного правительства
LEDC 2016
 
Александр Шуменко - Varnish for authenticated users
Александр Шуменко - Varnish for authenticated usersАлександр Шуменко - Varnish for authenticated users
Александр Шуменко - Varnish for authenticated usersLEDC 2016
 
Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...
Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...
Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...LEDC 2016
 
Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...
Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...
Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...LEDC 2016
 
Березовский Андрей - Social Authentication
Березовский Андрей - Social AuthenticationБерезовский Андрей - Social Authentication
Березовский Андрей - Social Authentication
LEDC 2016
 
Иван Фесюк - ApacheSolr+DrupalCommerce связка для высоко нагруженых проектов
Иван Фесюк -  ApacheSolr+DrupalCommerce связка для высоко нагруженых проектовИван Фесюк -  ApacheSolr+DrupalCommerce связка для высоко нагруженых проектов
Иван Фесюк - ApacheSolr+DrupalCommerce связка для высоко нагруженых проектов
LEDC 2016
 
Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)
Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)
Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)
LEDC 2016
 
Максим Ринг - Тестирование миграции и импорта
Максим Ринг - Тестирование миграции и импортаМаксим Ринг - Тестирование миграции и импорта
Максим Ринг - Тестирование миграции и импортаLEDC 2016
 

Viewers also liked (11)

Анатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to zАнатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to z
 
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.
Виктор Левандовский - Why Drupal? Как продавать Родину с напильником.
 
Чеботарь Кирилл - Panels - пособие для начинающих
Чеботарь Кирилл - Panels - пособие для начинающихЧеботарь Кирилл - Panels - пособие для начинающих
Чеботарь Кирилл - Panels - пособие для начинающих
 
Караиванов Георгий - Drupal в проектах Электронного правительства
Караиванов Георгий - Drupal в проектах Электронного правительстваКараиванов Георгий - Drupal в проектах Электронного правительства
Караиванов Георгий - Drupal в проектах Электронного правительства
 
Александр Шуменко - Varnish for authenticated users
Александр Шуменко - Varnish for authenticated usersАлександр Шуменко - Varnish for authenticated users
Александр Шуменко - Varnish for authenticated users
 
Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...
Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...
Александр Бондаренко - CommerceBox - Почему мы решили перевести нашу сборку н...
 
Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...
Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...
Евгений Гарбузов - E-commerce. Создание интернет-магазина на базе Drupal Comm...
 
Березовский Андрей - Social Authentication
Березовский Андрей - Social AuthenticationБерезовский Андрей - Social Authentication
Березовский Андрей - Social Authentication
 
Иван Фесюк - ApacheSolr+DrupalCommerce связка для высоко нагруженых проектов
Иван Фесюк -  ApacheSolr+DrupalCommerce связка для высоко нагруженых проектовИван Фесюк -  ApacheSolr+DrupalCommerce связка для высоко нагруженых проектов
Иван Фесюк - ApacheSolr+DrupalCommerce связка для высоко нагруженых проектов
 
Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)
Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)
Алексей Колосов - Типичные ошибки разработчиков на Drupal (версии 5,6,7)
 
Максим Ринг - Тестирование миграции и импорта
Максим Ринг - Тестирование миграции и импортаМаксим Ринг - Тестирование миграции и импорта
Максим Ринг - Тестирование миграции и импорта
 

Similar to Сергей Мирошниченко - SEO-friendly data migration

Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
DevDay
 
Инновационные средства управления дизайн-студией
Инновационные средства управления дизайн-студиейИнновационные средства управления дизайн-студией
Инновационные средства управления дизайн-студиейNatalia Sakhnova
 
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Транслируем.бел
 
Shaptala julia 2013ppt
Shaptala julia 2013pptShaptala julia 2013ppt
Shaptala julia 2013pptJulia Shaptala
 
Angular into drupal integration - Eugene Mickhnitskyy & Dmitriy Petruk
Angular into drupal integration - Eugene Mickhnitskyy & Dmitriy PetrukAngular into drupal integration - Eugene Mickhnitskyy & Dmitriy Petruk
Angular into drupal integration - Eugene Mickhnitskyy & Dmitriy Petruk
DrupalCamp Kyiv
 
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Ontico
 
Drupal Vs Other
Drupal Vs OtherDrupal Vs Other
Drupal Vs Other
Andrii Lundiak
 
Евгений Аралов
Евгений АраловЕвгений Аралов
Евгений Аралов
SEO.UA
 
дипломная презентация по разработке информационного портала автовладельца
дипломная презентация по разработке информационного портала автовладельцадипломная презентация по разработке информационного портала автовладельца
дипломная презентация по разработке информационного портала автовладельца
Ivan Simanov
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush
 
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Ontico
 
Web весна 2013 лекция 1
Web весна 2013 лекция 1Web весна 2013 лекция 1
Web весна 2013 лекция 1Technopark
 
SeoНеонатология
SeoНеонатологияSeoНеонатология
SeoНеонатология
Игорь Чуркин
 
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDBCodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDBCodeFest
 
Серверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDBСерверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDBStepan Stolyarov
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
Oleksii Okhrymenko
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Ontico
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP Framework
Oleksandr Torosh
 
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
Омские ИТ-субботники
 
Psgi app
Psgi appPsgi app
Psgi app
und3f
 

Similar to Сергей Мирошниченко - SEO-friendly data migration (20)

Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
 
Инновационные средства управления дизайн-студией
Инновационные средства управления дизайн-студиейИнновационные средства управления дизайн-студией
Инновационные средства управления дизайн-студией
 
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
 
Shaptala julia 2013ppt
Shaptala julia 2013pptShaptala julia 2013ppt
Shaptala julia 2013ppt
 
Angular into drupal integration - Eugene Mickhnitskyy & Dmitriy Petruk
Angular into drupal integration - Eugene Mickhnitskyy & Dmitriy PetrukAngular into drupal integration - Eugene Mickhnitskyy & Dmitriy Petruk
Angular into drupal integration - Eugene Mickhnitskyy & Dmitriy Petruk
 
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
 
Drupal Vs Other
Drupal Vs OtherDrupal Vs Other
Drupal Vs Other
 
Евгений Аралов
Евгений АраловЕвгений Аралов
Евгений Аралов
 
дипломная презентация по разработке информационного портала автовладельца
дипломная презентация по разработке информационного портала автовладельцадипломная презентация по разработке информационного портала автовладельца
дипломная презентация по разработке информационного портала автовладельца
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster
 
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
 
Web весна 2013 лекция 1
Web весна 2013 лекция 1Web весна 2013 лекция 1
Web весна 2013 лекция 1
 
SeoНеонатология
SeoНеонатологияSeoНеонатология
SeoНеонатология
 
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDBCodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
CodeFest 2010. Столяров С. — Серверный JavaScript: NodeJS и CouchDB
 
Серверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDBСерверный JavaScript: NodeJS и CouchDB
Серверный JavaScript: NodeJS и CouchDB
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
 
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP Framework
 
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
 
Psgi app
Psgi appPsgi app
Psgi app
 

More from LEDC 2016

A. Postnikov & P. Mahrinsky — Drupal Community — це ми
A. Postnikov & P. Mahrinsky — Drupal Community — це миA. Postnikov & P. Mahrinsky — Drupal Community — це ми
A. Postnikov & P. Mahrinsky — Drupal Community — це ми
LEDC 2016
 
Слава Мережко — Практикум: "Як ростити розробників"
Слава Мережко — Практикум: "Як ростити розробників"Слава Мережко — Практикум: "Як ростити розробників"
Слава Мережко — Практикум: "Як ростити розробників"
LEDC 2016
 
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
LEDC 2016
 
Олексій Калініченко — Configuration Management in Drupal8
Олексій Калініченко — Configuration Management in Drupal8Олексій Калініченко — Configuration Management in Drupal8
Олексій Калініченко — Configuration Management in Drupal8
LEDC 2016
 
Олександр Лінивий — Multisite platform with continuous delivery process for m...
Олександр Лінивий — Multisite platform with continuous delivery process for m...Олександр Лінивий — Multisite platform with continuous delivery process for m...
Олександр Лінивий — Multisite platform with continuous delivery process for m...
LEDC 2016
 
Андрій Юн — Воркшоп "Docker use cases for developers"
Андрій Юн — Воркшоп "Docker use cases for developers"Андрій Юн — Воркшоп "Docker use cases for developers"
Андрій Юн — Воркшоп "Docker use cases for developers"
LEDC 2016
 
Андрій Поданенко — Воркшоп "Розвертання CIBox"
Андрій Поданенко — Воркшоп "Розвертання CIBox"Андрій Поданенко — Воркшоп "Розвертання CIBox"
Андрій Поданенко — Воркшоп "Розвертання CIBox"
LEDC 2016
 
Юрій Герасімов — Editorial experience in Drupal8
Юрій Герасімов — Editorial experience in Drupal8Юрій Герасімов — Editorial experience in Drupal8
Юрій Герасімов — Editorial experience in Drupal8
LEDC 2016
 
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
LEDC 2016
 
Тарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developersТарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developers
LEDC 2016
 
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
LEDC 2016
 
Ігор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerІгор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developer
LEDC 2016
 
Олександр Щедров — Build your application in seconds and optimize workflow as...
Олександр Щедров — Build your application in seconds and optimize workflow as...Олександр Щедров — Build your application in seconds and optimize workflow as...
Олександр Щедров — Build your application in seconds and optimize workflow as...
LEDC 2016
 
Анатолій Поляков — Subdomains everywhere
Анатолій Поляков — Subdomains everywhereАнатолій Поляков — Subdomains everywhere
Анатолій Поляков — Subdomains everywhere
LEDC 2016
 
Артем Доценко — Deploy Plus. Better UI and more control for deploy module
Артем Доценко — Deploy Plus. Better UI and more control for deploy moduleАртем Доценко — Deploy Plus. Better UI and more control for deploy module
Артем Доценко — Deploy Plus. Better UI and more control for deploy module
LEDC 2016
 
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtensionСергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
LEDC 2016
 
Вадим Абрамчук — Big Drupal: Issues We Met
Вадим Абрамчук — Big Drupal: Issues We MetВадим Абрамчук — Big Drupal: Issues We Met
Вадим Абрамчук — Big Drupal: Issues We Met
LEDC 2016
 
Юрій Герасимов — Delayed operations with queues
Юрій Герасимов — Delayed operations with queuesЮрій Герасимов — Delayed operations with queues
Юрій Герасимов — Delayed operations with queues
LEDC 2016
 
Віталій Бобров — Web components, Polymer and Drupal
Віталій Бобров — Web components, Polymer and DrupalВіталій Бобров — Web components, Polymer and Drupal
Віталій Бобров — Web components, Polymer and Drupal
LEDC 2016
 
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
LEDC 2016
 

More from LEDC 2016 (20)

A. Postnikov & P. Mahrinsky — Drupal Community — це ми
A. Postnikov & P. Mahrinsky — Drupal Community — це миA. Postnikov & P. Mahrinsky — Drupal Community — це ми
A. Postnikov & P. Mahrinsky — Drupal Community — це ми
 
Слава Мережко — Практикум: "Як ростити розробників"
Слава Мережко — Практикум: "Як ростити розробників"Слава Мережко — Практикум: "Як ростити розробників"
Слава Мережко — Практикум: "Як ростити розробників"
 
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
Генадій Колтун — Комунізм наступає: що будемо робити, коли машини навчаться п...
 
Олексій Калініченко — Configuration Management in Drupal8
Олексій Калініченко — Configuration Management in Drupal8Олексій Калініченко — Configuration Management in Drupal8
Олексій Калініченко — Configuration Management in Drupal8
 
Олександр Лінивий — Multisite platform with continuous delivery process for m...
Олександр Лінивий — Multisite platform with continuous delivery process for m...Олександр Лінивий — Multisite platform with continuous delivery process for m...
Олександр Лінивий — Multisite platform with continuous delivery process for m...
 
Андрій Юн — Воркшоп "Docker use cases for developers"
Андрій Юн — Воркшоп "Docker use cases for developers"Андрій Юн — Воркшоп "Docker use cases for developers"
Андрій Юн — Воркшоп "Docker use cases for developers"
 
Андрій Поданенко — Воркшоп "Розвертання CIBox"
Андрій Поданенко — Воркшоп "Розвертання CIBox"Андрій Поданенко — Воркшоп "Розвертання CIBox"
Андрій Поданенко — Воркшоп "Розвертання CIBox"
 
Юрій Герасімов — Editorial experience in Drupal8
Юрій Герасімов — Editorial experience in Drupal8Юрій Герасімов — Editorial experience in Drupal8
Юрій Герасімов — Editorial experience in Drupal8
 
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
 
Тарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developersТарас Кирилюк — Docker basics. How-to for Drupal developers
Тарас Кирилюк — Docker basics. How-to for Drupal developers
 
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
Тарас Круц — Open Social: brand new Drupal 8 distro for building social netwo...
 
Ігор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerІгор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developer
 
Олександр Щедров — Build your application in seconds and optimize workflow as...
Олександр Щедров — Build your application in seconds and optimize workflow as...Олександр Щедров — Build your application in seconds and optimize workflow as...
Олександр Щедров — Build your application in seconds and optimize workflow as...
 
Анатолій Поляков — Subdomains everywhere
Анатолій Поляков — Subdomains everywhereАнатолій Поляков — Subdomains everywhere
Анатолій Поляков — Subdomains everywhere
 
Артем Доценко — Deploy Plus. Better UI and more control for deploy module
Артем Доценко — Deploy Plus. Better UI and more control for deploy moduleАртем Доценко — Deploy Plus. Better UI and more control for deploy module
Артем Доценко — Deploy Plus. Better UI and more control for deploy module
 
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtensionСергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
Сергій Бондаренко — Тестування Drupal сайтiв з допогою TqExtension
 
Вадим Абрамчук — Big Drupal: Issues We Met
Вадим Абрамчук — Big Drupal: Issues We MetВадим Абрамчук — Big Drupal: Issues We Met
Вадим Абрамчук — Big Drupal: Issues We Met
 
Юрій Герасимов — Delayed operations with queues
Юрій Герасимов — Delayed operations with queuesЮрій Герасимов — Delayed operations with queues
Юрій Герасимов — Delayed operations with queues
 
Віталій Бобров — Web components, Polymer and Drupal
Віталій Бобров — Web components, Polymer and DrupalВіталій Бобров — Web components, Polymer and Drupal
Віталій Бобров — Web components, Polymer and Drupal
 
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
Олександр Щедров та Альбіна Тюпа — Magic button. Can production releases be s...
 

Сергей Мирошниченко - SEO-friendly data migration

  • 1. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 SSEEOO--ооппттииммииззииррооввааннннааяя ммииггрраацциияя ддаанннныыхх вв DDrruuppaall Sergey Miroshnichenko Developer Adyax smiroshnichenko@adyax.com
  • 2. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 http://site.com/en http://site.com/fr http://site.com/ua http://en.site.com http://fr.site.com http://ua.site.com http://en.m.site.com http://fr.m.site.com http://ua.m.site.com
  • 3. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 План действий 1. Анализ структуры данных и ЧПУ 2. Анализ источников трафика 3. Создание новой структуры 4. Подготовка данных 5. Миграция данных 6. Настройка переадресации 7. Внутренняя SEO-оптимизация 8. Запуск 9. Анализ последствий
  • 4. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 Анализ структуры данных и ЧПУ http://site.com/en?c=front&m=brand&bid=767&d=true Имя модели ID модели Расширенная версия Текущий язык Имя контроллера
  • 5. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 fr?c=author&uid=33 en?c=category&id=77 ua?c=search&query=apple en?pid=758 Top pages 3000 3000 5000 8000 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 Hits External links Анализ источников трафика
  • 6. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 Создание новой структуры id brand model description details Integer Integer text Longtext Serialized $taxonomy_term->field_source_id $taxonomy_term->field_old_url $node->field_source_id $node->field_old_url $field_collection->source_id $field_collection->field_old_url
  • 7. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 Подготовка данных 1. Установка и настройка инструментов миграции 2. Настройка обработки полей, содержащих html (внешние и внутренние ссылки, изображения, преобразование html-тегов) 3. Настройка обработки полей мета-тегов 4. Настройка переноса файлов
  • 8. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 Миграция данных
  • 9. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 Настройка переадресации Доступные решения Varnish Nginx Apache Drupal HTTP accelerator HTTP proxy HTTP back end server Application
  • 10. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 Настройка переадресации Средства сервера 1. www / non-www 2. Неиспользуемые субдомены 3. Статика
  • 11. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 Настройка переадресации Средства Drupal 1. Для главной страницы — версия сайта и языковый субдомен. Решение: Средства сервера или JavaScript (User-agent, Cookies). 2. Для внутренних страниц — адрес, версия сайта и субдомен. Решение: Модуль Redirect и JavaScript.
  • 12. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 Настройка переадресации Модуль Redirect (https://www.drupal.org/project/redirect) 1. «Destination language» field 2. Operations hooks:  hook_redirect_insert()  hook_redirect_update()  hook_redirect_delete() 3. Processing hooks:  hook_redirect_load()  hook_redirect_alter()
  • 13. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 Настройка переадресации Миграция адресов Source Base url, query params, language Destination System path, query params, fragment, language
  • 14. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 Настройка переадресации Переадресация «на лету» по маске Page not found - 404 redirect_get_current_redirect() drupal_get_query_parameters() drupal_goto()
  • 15. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 Настройка переадресации С помощью JavaScript Проверить наличие Cookie версии сайта Есть Перенаправить Нет Записать Cookie Определить устройство
  • 16. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 Внутренняя SEO-оптимизация Семантика 1. HTML-разметка 2. Микроразметка 3. Open Graph теги
  • 17. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 Внутренняя SEO-оптимизация Индексация 1. Мета-теги 2. Pathauto 3. Canonical URL 4. Robots.txt 5. XML Sitemap 6. Global Redirect
  • 18. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 Внутренняя SEO-оптимизация Alternate-теги 1. В теле страницы <link hreflang="fr" href="http://fr.site.com/" rel="alternate"> <link media="only screen and (max-width: 640px)" href="http://fr.m.site.com/" rel="alternate"> 2. В XML-карте сайта <xhtml:link hreflang="fr" rel="alternate" href="http://fr.site.com"/> <xhtml:link rel="alternate" media="only screen and (max-width: 640px)" href="http://fr.m.site.com"/>
  • 19. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 Запуск
  • 20. Lviv EEuurroo DDrruuppaallCCaammpp 22001144 Анализ последствий 1. Google webmaster tools 2. Google Analytics 3. Server logs 4. Application logs.