Установка коду 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']); echo ($ o ['request_uri']); Подивимося, що вийшло: Знову відмінності, символ косою риси і пробіл перетворився в% 2F і + відповідно. Необхідно це виправити. Робимо автозаміну: $ o ['request_uri'] = str_replace ("% 2F", "/", urlencode ($ _SERVER ['REDIRECT_URL'])); echo ($ o ['request_uri']); Перевіряємо, що вийшло: Тепер все вірно, адреса сторінки збережений в біржі і передаваний коду показу посилань однаковий. Посилання стали виводиться на сторінці. Залишається дочекатися коли система перевірить ще розміщені посилання і поставить по ним статус Ok. PS: Упевнений, що в блоці автозаміни враховані не всі випадки, коли будуть відмінності в урлкодірованіі sape і функції php urlencode, тому при випаданні посилання в статус Error необхідно буде внести правки в код автозаміни. PPS: На сторінці з прикладу може не бути проданих посилань.
$ Sape = new SAPE_client ($ o);
$ O ['request_uri'] = str_replace ("+", "% 20", $ o ['request_uri']);
Опубліковано: 18/08/10 @ 11:10
Розділ seo
Рекомендуємо:
Секрети контекстної реклами в новій книзі « Контекстна реклама » від професіоналів - практиків
Ефективне просування сайтів в Яндексі . Михайло Райцин , Олексій Кураков . Електронна книга .
$ 50 від американців за російську пошук по німецькій статті в польському журналі з французьким прононсом та англійськими корінням .
Дайджест : продаж ThinkGrid , Computer Science в Khan Academy , міфи про індійський аутсорсингу , корпоративна культура Dropbox
Інтерв'ю - Вадим Сахнік , автор блогу wildo.ru