Установка коду SAPE на сайт з кириличними урламі ( UTF - 8 )

На одному з моїх проектів на якому збираю акорди для гітари використовуються кодування UTF - 8 і кириличні урли а- ля Вікіпедія . У такого підходу є як плюси , таки і мінуси .

Як виявилося , біржа посилань Sape не вміє правильно обробляти кириличні урли . Переписка зі службою підтримки проблеми не вирішила , порадили переробляти кодування адрес сторінок. Якби сайт був маленький і був би не проіндексовані пошуковими системами, можливо , такий варіант і підійшов . Але не в даному випадку , коли пошуковими системами проіндексовано 1000 сторінок і на сайт йде пошуковий трафік. Якщо ви не впевнені у своїх силах , то краще замовити просування корпоративного сайту в топ Яндекса у професіоналів. Щоб запустити продаж посилань на сайті довелося доопрацювати код виклику Sape. Вказівка ??кодування посилань Щоб посилання виводилися в правильному кодуванні потрібно повідомити sape в якому кодуванні зберігати посилання в файлі бази посилань . Для цього в файл .htaccess додав наступний рядок: AddDefaultCharset UTF - 8 . Зазвичай цього вистачає . Після внесення змін до .htaccess потрібно видалити файл links.db Якщо попередній спосіб не призвів до бажаного результату можна прописати кодування забираються посилань за допомогою коду з хелпа sape http://help.sape.ru/sape/faq/228 $ o [' charset '] = ' UTF - 8 ';
$ sape = new SAPE_client ($ o ) ;
unset ($ o ) ; Після внесення змін до php код потрібно видалити файл links.db Тепер розберемося з виведенням посилань . Т.к . на сайті використовується mod_rewrite sape не завжди вірно визначає урл сторінки. Повідомлятимемо урл відкритої сторінки наступним кодом : $ o [' request_uri '] = $ _SERVER [' REDIRECT_URL '] ;
$ sape = new SAPE_client ($ o ) ; Можна подивитися , що передається в змінну зробивши висновок: echo ($ o [' request_uri '] ) ; Тут то і виявляються відмінності в адресах сторінок збережених в проекті сайту в sape і адреси сторінки на якому викликається код . Урл сторінок сайту в кодуванні UTF - 8 .
На сторінках урл яких без UTF - 8 посилання виводяться нормально , наприклад http://dodiez.ru/map/5/ На сторінці http://dodiez.ru/music/%D0%9A%D0%BE%D1%80%D0%BE%D0%BB%D1%8C%20%D0%B8%20%D1%88%D1%83%D1%82/%D0%92%D0%B0%D0%BB%D0%B5%D1%82%20%D0%B8%20%D0%94%D0%B0%D0%BC%D0%B0/ що аналогічно http://dodiez.ru/music/Король і шут/Валет і дама/ посилання не відображаються і мають статус ERROR . Дивимося як збережений урл сторінки в sape : http://dodiez.ru/music/%D0%9A%D0%BE%D1%80%D0%BE%D0%BB%D1%8C%20%D0%B8%20%D1%88%D1%83%D1%82/%D0%92%D0%B0%D0%BB%D0%B5%D1%82%20%D0%B8%20%D0%94%D0%B0%D0%BC%D0%B0/ Дивимося що передається через змінну $ _ SERVER [' REDIRECT_URL '] / music/Король і шут/Валет і Дама/ Виходить , що при виводі посилань sape намагається показати код на потрібній сторінці , проте в базі посилання зберігатися в урлкодірованном вигляді. Зробимо перетворення змінивши код: $ o [' request_uri '] = urlencode ( $ _ SERVER [' REDIRECT_URL '] ) ;
$ sape = new SAPE_client ($ o ) ; echo ($ o [' request_uri '] ) ; Подивимося , що вийшло:

%2Fmusic%2F%D0%9A%D0%BE%D1%80%D0%BE%D0%BB%D1%8C+%D0%B8+%D1%88%D1%83%D1%82%2F%D0%92%D0%B0%D0%BB%D0%B5%D1%82+%D0%B8+%D0%94%D0%B0%D0%BC%D0%B0%2F

Знову відмінності , символ косою риси і пробіл перетворився у% 2F і + відповідно. Необхідно це виправити. Робимо автозаміну : $ o [' request_uri '] = str_replace ( " % 2F " , "/" , urlencode ( $ _ SERVER [' REDIRECT_URL '] )) ;
$ o [' request_uri '] = str_replace ( " + " , " % 20 " , $ o [' request_uri '] ) ; echo ($ o [' request_uri '] ) ; Перевіряємо , що вийшло:

/music/%D0%9A%D0%BE%D1%80%D0%BE%D0%BB%D1%8C%20%D0%B8%20%D1%88%D1%83%D1%82/%D0%92%D0%B0%D0%BB%D0%B5%D1%82%20%D0%B8%20%D0%94%D0%B0%D0%BC%D0%B0/

Тепер все вірно , адреса сторінки збережений в біржі і переданий коду показу посилань однаковий. Посилання стали виводиться на сторінці . Залишається дочекатися коли система перевірить ще раз розміщення посилання і поставить по ним статус Ok . PS: Упевнений , що в блоці автозаміни враховані не всі випадки , коли будуть відмінності в урлкодірованіі sape і функції php urlencode , тому при випаданні посилання в статус Error необхідно буде внести правки в код автозаміни . PPS : На сторінці з прикладу може не бути проданих посилань .

Опубліковано: 18/08/10 @ 11:10
Розділ seo

Рекомендуємо:

Статистика ключових слів на Яндексі , підбір ключових слів і аналіз в Словоёбе .
Парсер підказок пошукових запитів - Словодёр
23 серпня, Львів - Міжнародна виставка розвітку IT - кар'єри career4it
17 серпня, Київ - Благодійна лекція « Історія веб - дизайну »
23 серпня, Одеса - QA Expert Day