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

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

27 сентябрь 2017, Среда
1 271
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]
Комментарии:
Прокомментировать
Модули для создания киносайта и не только на базе DataLife Engine, и многое другое...
Просто блог Евгения Попова, он же - byroot © 2020