Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Проблема с тегами

Проблема с тегами


     11.08.2011    баги    Общие вопросы, Общие вопросы по PHP    4944

вопрос
Доброе время суток. Помогите мне исправить, очень не приятную ошибку движка. Когда пользователи попадают на сайт с поисков по тегам, то выдает ошибку (данная новость не существует). Заметил что такая ошибка происходит только на русском языке. Пример http://site.ru/tags/tut+tut/ - работает нормально, а если так http://site.ru/tags/тут+тут/ - возникает ошибка что данной новости не существует, а она есть. Помогите пожалуйста!

Ответил: F1ST


Если не ошибаюсь, то такое (использование кириллицы в URL) возможно только на кодировке UTF-8, иначе, согласно стандартам URL, кирилица должна быть написана в адресной строке именно в URL кодированном виде, а не просто
буква на русском :)

Пример
site.ru/tags/тут/


А должно быть:
site.ru/tags/%F2%F3%F2/

16 комментариев

stoper
Юзер

stoper - 11 августа 2011 13:45 -

А как мне тогда это сделать? В таком виде?

ПафНутиЙ
Админ

ПафНутиЙ - 11 августа 2011 16:05 -

А каким образом у вас вообще в поиск попали некорректные ссылки если двиг их генерирует в нормальном виде?

Каков вопрос - таков и ответ. Просто помните об этом.

rashpil
Эксперт

rashpil - 11 августа 2011 18:14 -

Не соглашусь с ответом. Я сталкивался с подобными проблемами. Как оказалось, что это всё зависит от сервера и от настроек по-моему ФС. Но я решил у себя проблему довольно просто - перевёл злостные УРЛы на транслит. Чего и вам советую :) Если мне не станет лениво, то выкину в паблик инструкцию

ПафНутиЙ
Админ

ПафНутиЙ - 12 августа 2011 06:49 -

Конечно выкидывайте, многим будет полезно.

Каков вопрос - таков и ответ. Просто помните об этом.

F1ST
Юзер

F1ST - 12 августа 2011 07:44 -

rashpil, я же не утверждаю, что моя версия единственно верная. Но и ошибкой это не считаю, все есть именно так. Раз есть другое решение, будем рады ознакомиться :)

stoper
Юзер

stoper - 12 августа 2011 10:04 -

Сегодня покопался на сайте и увидел. Теги на русском в правду работают нормально в виде
site.ru/tags/%F2%F3%F2/
Данную проблему заметил в это модуле Переходы 8.9. Там теги вида
site.ru/tags/тут/
. И я понять не могу почему такая версия тегов появилась в поиске. А самое главное, что такие ссылки только в Яндексе, а гугл нормально отображает эти ссылки.

ПафНутиЙ
Админ

ПафНутиЙ - 12 августа 2011 10:08 -

Если ссылки попали в ПС, значит они чем то генерируются, например тем же модулем переходы.
А вообще лучше закрывать от ПС облако тегов - это же хренова туча дублей страниц в поиске..... релевантность падает же.

Каков вопрос - таков и ответ. Просто помните об этом.

stoper
Юзер

stoper - 12 августа 2011 10:31 -

Спасибо за совет! Будем блокировать теги от ПС. Тогда тут рождается такой вопрос, как это сделать в robots.txt просто ставить строчку Disallow: /tags/ ?

ПафНутиЙ
Админ

ПафНутиЙ - 12 августа 2011 10:37 -

именно так,

Каков вопрос - таков и ответ. Просто помните об этом.

stoper
Юзер

stoper - 12 августа 2011 10:40 -

Спасибо! Сайт и правду хороший помощник начинающим.

ПафНутиЙ
Админ

ПафНутиЙ - 12 августа 2011 11:01 -

Хотя, если не много тегов - это даже лучше, можно и не закрывать

Каков вопрос - таков и ответ. Просто помните об этом.

Sander
PHP-developer

Sander - 12 августа 2011 12:53 -

Лучше сразу закрыть. Все равно со временем количество тегов вырастет...

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

ZeiN
Юзер

ZeiN - 2 сентября 2011 13:12 -

engine.php -> после строки
$tag = @$db->safesql ( htmlspecialchars ( strip_tags ( stripslashes ( trim ( urldecode ( $_GET['tag'] ) ) ) ), ENT_QUOTES ) );


вставляем
[code][/code]// Исправление кодировки ссылок
function get_encoding($str){
$cp_list = array('utf-8', 'windows-1251');
foreach ($cp_list as $k=>$codepage){
if (md5($str) === md5(iconv($codepage, $codepage, $str))){
return $codepage;
}
}
return null;
}
$encoding = get_encoding($tag);
if ($encoding == 'utf-8') {
$tag = iconv("UTF-8", "CP1251", $tag);
}
// Исправили :)

nowheremany
Эксперт

nowheremany - 2 сентября 2011 13:27 -

Костыль....


Решается настройкой сервера принимать url в каком формате - utf или вин

Благодарность принимаю тут Связь

ZeiN
Юзер

ZeiN - 2 сентября 2011 13:29 -

ну готового такого костыля я не нашел, так что прикрутил свой.
Ситуации всякие бывают, кому-то удобнее настройкой сервера решить, кому-то костылем

ПафНутиЙ
Админ

ПафНутиЙ - 2 сентября 2011 13:51 -

Это проблема не сайта, как написано в прессрелиде к 9.4 - глюк яндекса. )))) уже пофиксили в 9.4

Каков вопрос - таков и ответ. Просто помните об этом.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх