Исправление проблемы с множественными слешами в 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]
Похожие статьи:
Комментарии: