Как настроить редирект на страницы со слешем и с прописных на строчные?
Сайт на WordPress.
Подскажите как настроить режирект со страниц без слеша на страницы со слешем?
Но при этом чтобы правило не срабатывало на скрипты и прочее, а только на страницы (т.к. в таком случае они не работают).
И как настроить редирект с заглавных на маленькие буквы?
Дополнительно
Ответы:
напишите кусочек PHP кода в index.php и будет Вам счастье
- Михаил Ливач с регистрами разобрался, но со слешем так и не нашел решения
- Илья Деревянных, а что не получилось? принцип же тот же
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Редирект на URL со слешем и приведение прописных букв к строчным лучше делать на уровне сервера, а не WordPress-плагином. Но сначала проверьте: WordPress сам обычно умеет canonical redirect и добавляет слеш по настройкам permalink.
Для nginx пример приведения к нижнему регистру штатными средствами сложнее, потому что nginx не умеет просто сделать lowercase URI без map/lua/perl. Поэтому часто ограничиваются редиректом слеша, а uppercase правят через приложение или CDN.
Для Apache можно использовать правила в
.htaccess, но lowercase-редирект тоже нетривиален. Если задача только со слешем:<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ /$1/ [L,R=301] </IfModule>
Для WordPress чаще достаточно:
redirect_canonical.Если uppercase URL уже попали в индекс, можно сделать PHP-редирект:
add_action('template_redirect', function () { $uri = $_SERVER['REQUEST_URI'] ?? ''; $lower = strtolower($uri); if ($uri !== $lower) { wp_safe_redirect(home_url($lower), 301); exit; } });
Перед таким правилом обязательно проверьте URL с кириллицей, query string и админку, чтобы не получить лишние редиректы.