Технический сбой

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

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


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

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

Обновился с версии 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 комментария

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

ПафНутиЙ - -

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

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

ds8880
Юзер

ds8880 - -

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

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

наверх