Evanre
@Evanre
Front-end developer

Как настроить 301 редирект с верхнего на нижний регистр в WordPress?

Привет, один СЕОшник провел аудит простого сайта на WordPress и одна из рекомендаций заключалась в настройке 301 редиректов со ссылок с верхним регистром на нижний. Например:
https://site.com/Post-slug > https://site.com/post-slug

Ломаю голову как лучше это сделать с минимальной потерей производительности? Это настраивается на стороне сервера или в php коде wp?

Спасибо
  • Вопрос задан
  • 3993 просмотра
Решения вопроса 1
ya-vitaliy
@ya-vitaliy
Верстаю... + wordpress и пробую Laravel
Если не хотите заморачиваться с настройкой htaccess, можете использовать плагин: WP Force Lowercase URLs. Сам недавно решал такую задачу, думал тоже сначала без плагина, чтобы не создавать лишнюю нагрузку, потом открыл код плагин, а там 60 строк (причем элементарного).
spoiler
class WPForceLowercaseURLs {
    /**
     * Initialize plugin
     */
    public static function init() {
      // If page is non-admin, force lowercase URLs
      if ( !is_admin() ) {
        add_action( 'init', array('WPForceLowercaseURLs', 'toLower') );
      }
    }
    /**
     * Changes the requested URL to lowercase and redirects if modified
     */
    public static function toLower() {

      // Grab requested URL
      $url = $_SERVER['REQUEST_URI'];
      $params = $_SERVER['QUERY_STRING'];

      // If URL contains a period, halt (likely contains a filename and filenames are case specific)
      if ( preg_match('/[\.]/', $url) ) {
        return;
      }
      // If URL contains a capital letter
      if ( preg_match('/[A-Z]/', $url) ) {
        // Convert URL to lowercase
        $lc_url = empty($params)
          ? strtolower($url)
          : strtolower(substr($url, 0, strrpos($url, '?'))).'?'.$params;

        // if url was modified, re-direct
        if ($lc_url !== $url) {

          // 301 redirect to new lowercase URL
          header('Location: '.$lc_url, TRUE, 301);
          exit();
        }
      }
    }
  }
  WPForceLowercaseURLs::init();

Не думаю, что это сильно нагрузит сайт. В обще поставил плагин и не парился.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
azerphoenix
@azerphoenix
Java Software Engineer
Полезная статья по вашей теме -
https://www.goinflow.com/redirect-uppercase-urls-t...
А вот решение из этой статьи -
https://brianflove.com/2014/08/11/lowercase-your-uris/

Тут уже вопрос - есть ли у вас доступ к httpd конфиг файлу. Если шаред хостинг, то скорее всего нет
Ответ написан
Комментировать
И в очередной раз спрошу зачем сей идиотский редирет ?
1. В винде в отличие от линукс регистр не имеет значинея, а вот в линуксе на уровне файловой системы имеет.
Так что вам прийдется исключить все реально существующие дирректории и каталоги и линки.
2. покажите кейс скриншогтом когда у вас в метрике виден вход на такую страницу с ошибочным регистром урла.
А потом мы вернемся к сеему идиотскому редиректу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы