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