Установка коду 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

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

Секрети контекстної реклами в новій книзі «Контекстна реклама » від професіоналів- практиків
Ефективне просування сайтів в Яндексі. Михайло Райцин , Олексій Кураков . Електронна книга.
Статистика ключових слів на Яндексі , підбір ключових слів і аналіз в Словоебе .
Як привернути увагу до свого сайту у видачі розвідувачів
Експеримент з WebEffector . Звіт № 2