Главная страница / DataLife Engine / Хаки / Исправление проблемы с множественными слешами в url

Исправление проблемы с множественными слешами в url

27 сентября 2017, Среда
2 716
0
Исправление проблемы с множественными слешами в url

В DLE есть проблема с слэшами в url, их может быть бесконечное количество и эти страницы отдают код 200. Так как разработчик не планирует этого исправлять уже как 12 версий движка, то вот вам мое исправление.

Стоит отметить, что данная проблема есть не только в ДЛЕ, но и в гугле и многих топовых сайтах:
https://www.google.ru///
https://lenta.ru/news///2017/09/27/durov/

Такие страницы существуют в DLE и отдают код 200. Нужно это исправить.

1. Открыть engine/engine.php найти
if ($cstart < 0) $cstart = 0;
Выше вставить
$slash_array = explode("/", $_SERVER['REQUEST_URI']);
$count_slash = array_count_values($slash_array);
if($count_slash[''] > 2) {
    $url_normal = array_filter($slash_array, function($element) {
        return !empty($element);
    });
    $url_redirect = implode("/", $url_normal);
   
    header("HTTP/1.0 301 Moved Permanently");
    header("Location: /{$url_redirect}/");
    die("Redirect");
}


Автор: PunPun

Чтобы новости на конце с .html тоже нормально открывались, нужно в коде выше
header("Location: /{$url_redirect}/");
удалить последний слеш, чтобы было:
header("Location: /{$url_redirect}");

Тогда новости будут открываться, и не будет добавляться слеш в конце ссылки полных новостей!

Есть ещё вариант через .htaccess:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R,L]
Комментарии:
{login}

Твой комментарий..

Модули для создания киносайта и не только на базе DataLife Engine, и многое другое...
Просто блог Евгения Попова, он же - byroot © 2015-2025 | Карта сайта