Блог byroot
Авторизация

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

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

Читайте также

  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Введите два слова, показанных на изображении:*
Авторизация