Веб-строительство(PHP) Редирект URL в нижний регистр кроме страниц c расширением 28.03.2021 Vaily 29 сентября 2020, 12:57 119Сейчас стоит редирект для всех страниц в Верхнем регистре на нижний регистр:if ( $_SERVER['REQUEST_URI'] != strtolower( $_SERVER['REQUEST_URI']) ) { header('Location: //'.$_SERVER['HTTP_HOST'] . strtolower($_SERVER['REQUEST_URI']), true, 301); exit(); }Нужно исключить редирект в нижний регистр для страниц с расширениями (например: html, docx, pdf и т.д.) То есть, дополнить условие исключением для страниц с любым расширением. Magazinshik 29 сентября 2020, 14:08Если не ошибаюсь, то будет так.Для списка известных расширений:if ( $_SERVER['REQUEST_URI'] != strtolower( $_SERVER['REQUEST_URI']) ) { if (!preg_match("/.(pdf|doc|docx|xls|xlsx)$/i", $_SERVER['REQUEST_URI'])) { header('Location: //'.$_SERVER['HTTP_HOST'] . strtolower($_SERVER['REQUEST_URI']), true, 301); exit(); }}Для всех случаев, когда появляется точка и после идёт 2-4 знака и конец строки:if ( $_SERVER['REQUEST_URI'] != strtolower( $_SERVER['REQUEST_URI']) ) { if (!preg_match("/.[a-z0-9]{2,4}$/i", $_SERVER['REQUEST_URI'])) { header('Location: //'.$_SERVER['HTTP_HOST'] . strtolower($_SERVER['REQUEST_URI']), true, 301); exit(); }} Vaily 29 сентября 2020, 14:29 То, что надо. Оба варианта. Magazinshik, низкий Вам поклон добрый человек! Vaily 30 сентября 2020, 13:34В ходе эксплуатации редиректа возникла необходимость исключить проверку GET-параметров. Получилось так:$uri_parts = explode('?', $_SERVER['REQUEST_URI'], 2);if ( $uri_parts[0] != strtolower( $uri_parts[0]) ) { if (!preg_match("/.(pdf|doc|docx|xls|xlsx)$/i", $uri_parts[0])) { header('Location: //'.$_SERVER['HTTP_HOST'] . strtolower($uri_parts[0]), true, 301); exit(); }}и соответственно:$uri_parts = explode('?', $_SERVER['REQUEST_URI'], 2);if ( $uri_parts != strtolower( $uri_parts) ) { if (!preg_match("/.[a-z0-9]{2,4}$/i", $uri_parts)) { header('Location: //'.$_SERVER['HTTP_HOST'] . strtolower($uri_parts), true, 301); exit(); }}Может быть кому-то пригодится. Похожие записи:Как убрать дату постов, которую выводит Yoast SeoИсключение в htaccess для определенного URLПереезд на HTTPS. Почему 301 редирект перенаправляет все страницы только на главную?Вопрос по редиректуОбщий класс для GSON LinkedHashMap
Vaily
Сейчас стоит редирект для всех страниц в Верхнем регистре на нижний регистр:
if ( $_SERVER['REQUEST_URI'] != strtolower( $_SERVER['REQUEST_URI']) ) { header('Location: //'.$_SERVER['HTTP_HOST'] . strtolower($_SERVER['REQUEST_URI']), true, 301); exit(); }Нужно исключить редирект в нижний регистр для страниц с расширениями (например: html, docx, pdf и т.д.)
То есть, дополнить условие исключением для страниц с любым расширением.
Magazinshik
Если не ошибаюсь, то будет так.
Для списка известных расширений:
Для всех случаев, когда появляется точка и после идёт 2-4 знака и конец строки:
Vaily
То, что надо. Оба варианта.
Magazinshik, низкий Вам поклон добрый человек!
Vaily
В ходе эксплуатации редиректа возникла необходимость исключить проверку GET-параметров.
Получилось так:
и соответственно:
Может быть кому-то пригодится.