Установка коду 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/Король і шут/Валет і дама /

посилання не відображаються і мають статус ERROR .

Дивимося як збережений урл сторінки в sape :

Дивимося що передається через змінну $ _SERVER [' REDIRECT_URL ']

/ music/Король і шут/Валет і Дама /

Виходить , що при виведенні посилань sape намагається показати код на потрібній сторінці , проте в базі посилання зберігатися в урлкодірованном вигляді. Зробимо перетворення змінивши код:

$ o [' request_uri '] = urlencode ($ _SERVER [' REDIRECT_URL '] ) ;
$ sape = new SAPE_client ($ o ) ;

echo ($ o [' request_uri '] ) ;

Подивимося , що вийшло:

Знову відмінності , символ косою риси і пробіл перетворився у% 2F і + відповідно. Необхідно це виправити. Робимо автозаміну :

$ o [' request_uri '] = str_replace ( " % 2F " , "/" , urlencode ($ _SERVER [' REDIRECT_URL '] )) ;
$ o [' request_uri '] = str_replace ( " +" , " % 20 " , $ o [' request_uri '] ) ;

echo ($ o [' request_uri '] ) ;

Перевіряємо , що вийшло:

Тепер все вірно , адресу сторінки збережений у біржі і переданий коду показу посилань однаковий. Посилання стали виводиться на сторінці . Залишається дочекатися коли система перевірить ще раз розміщення посилання і поставить по ним статус Ok .

PS : Упевнений , що в блоці автозаміни враховані не всі випадки , коли будуть відмінності в урлкодірованіі sape і функції php urlencode , тому при випаданні посилання в статус Error необхідно буде внести правки в код автозаміни .

PPS : На сторінці з прикладу може не бути проданих посилань.

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

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

Вся правда про інтернет манімейкер (вправа в мутаційному рерайтинга )
Конкурс " екс- СРСР на експорт"
12 грудня , Одеса - IT Career : First steps
28 листопада, Харків - TechTalk by Dev - Pro.net # 6
Кар'єра в IT: посаду Software Architect