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

Проблемы с url tags при смене кодировки DLE, как исправить?


     06.01.2016    Все вопросы » Хаки    837

вопрос
Здравствуйте.

Обновился с версии 8.3 windows-1251 до версии 10.6 utf-8.

Возникла проблема с кодировкой URL при поиске публикаций по определенному тегу.

Например, у тега "Коломна" на 8.3 в кодировке windows-1251 был следующий URL:
site.ru/tags/%CA%EE%EB%EE%EC%ED%E0/

Теперь на 10.6 в кодировке utf-8 у этого же тега URL такой:
site.ru/tags/%D0%9A%D0%BE%D0%BB%D0%BE%D0%BC%D0%BD%D0%B0/

Соответственно это два разных URL и в разных кодировках.
В яндекс и гугл вебмастере появилось куча ошибок 404, так как в поиске были старые URL: site.ru/tags/%CA%EE%EB%EE%EC%ED%E0/ поэтому, при переходе по таким адресам, публикаций не обнаружено. Ошибок таких появилось очень много.

Как исправить ситуацию? Либо сделать 301 редирект со старых URL на новые URL, либо сделать формирование тегов как на старой версии в той же кодировке. Как это осуществить?

Заранее, благодарю.

Ответил: ПафНутиЙ


Для исправления косяка с 404 ошибкой при индексировании открываем /engine/engine.php
Ищем:

$tag = urldecode ( $_GET['tag'] );

Ниже вставляем:

/** 
* Фикс облака тегов по старым ссылкам
* @author ПафНутиЙ <pafnuty10@gmail.com>
* @link http://git.io/qE7Lcw DLE-Charset-Converter
*/
if (detect_encoding($tag) == 'windows-1251') {
    $tag = iconv( 'windows-1251', 'UTF-8//IGNORE', $tag );
    $tag = str_replace(' ', '+', $tag);

    header('HTTP/1.0 301 Moved Permanently');
    header('Location: /tags/' . $tag . '/');
    die('Redirect');
}

2 комментария

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

ПафНутиЙ - 6 января 2016 15:10 -

***Комментарий удален***

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

ds8880
Юзер

ds8880 - 6 января 2016 16:24 -

Спасибо огромнейшее, все работает. Ураааа!!!

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

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

наверх