Как настроить редирект на страницы со слешем и с прописных на строчные?

Ссылка скопирована
1 ответ

Сайт на WordPress.
Подскажите как настроить режирект со страниц без слеша на страницы со слешем?
Но при этом чтобы правило не срабатывало на скрипты и прочее, а только на страницы (т.к. в таком случае они не работают).
И как настроить редирект с заглавных на маленькие буквы?

Дополнительно

Ответы:

напишите кусочек PHP кода в index.php и будет Вам счастье

  • Михаил Ливач с регистрами разобрался, но со слешем так и не нашел решения
  • Илья Деревянных, а что не получилось? принцип же тот же
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Анна SEO Ответ

Редирект на 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>

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ /$1/ [L,R=301] </IfModule>

Для WordPress чаще достаточно:

  1. Проверить «Настройки → Постоянные ссылки».
  2. Сохранить структуру permalink.
  3. Не отключать 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;
    }
});

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 и админку, чтобы не получить лишние редиректы.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно