Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Хаки Проблемы с url tags при смене кодировки DLE, как исправить?

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


     06.01.2016    Хаки    646

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

Обновился с версии 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)

ПафНутиЙ
1065

3396 | 2434

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

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

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

ds8880
3

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

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

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

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