Дубли страниц с заглавными буквами в url

Добрый вечер.
Я понял, что вопросы не касающиеся напрямую MODX задавать не стоит )
Кэширование данных в браузере — включить
исправляюсь.
Сегодня SEO специалисты написали мне что на всех проектах на MODX все страницы дублируются, если задать их url заглавными буквами или еще того хуже — любой комбинацией заглавных и прописных букв.
И да, это так.
modx.pro/BLOGS
Такое же наблюдается и на wordpress и на joomla но вернемся к modx.

Кто-то решал подобную задачу?
Или подскажите пожалуйста, какой класс занимается обработкой url, я попробую либо делать редирект на принудительно переведенный в нижний регистр либо отдавать 404.
Спасибо.
Александр Мельник
23 мая 2019, 20:35
modx.pro
3 031
0

Комментарии: 10

Сергей Шлоков
24 мая 2019, 06:35
0
Сегодня SEO специалисты написали мне что на всех проектах на MODX все страницы дублируются, если задать их url заглавными буквами или еще того хуже — любой комбинацией заглавных и прописных букв.
«Дебилы, бл@дь» © Сергей Викторович Лавров.
    Сергей Шлоков
    24 мая 2019, 07:22
    +2
    Сорри за первую реакцию.

    Решение на скорую руку. Плагин на OnHandleRequest.
    if ($modx->context->key == 'mgr') return;
    if ($_SERVER['REQUEST_URI'] !== strtolower($_SERVER['REQUEST_URI'])) {
        $modx->sendRedirect(strtolower($_SERVER['REQUEST_URI']), array('responseCode' => $_SERVER['SERVER_PROTOCOL'] . ' 301 Moved Permanently'));
    }
    Проверять некогда. В теории должно работать.
      Александр Мельник
      24 мая 2019, 09:08
      0
      Да, спасибо Сергей. примерно так я и начал организовывать, правда ваш код на две строки короче и изящнее.
      Насчет первого комментария, почти соглашусь с вами и Лавровым.
      Дмитрий
      24 мая 2019, 11:22
      0
      Поинтересовался у коллеги СЕО, по этому вопросу. Возникают два варианта:
      1. Если ресурс есть по ссылке, тогда все отработает корректно со стороны поисковой системы.
      2. Если ресурса нет, то нужно сразу отдавать ответ 404, без 301 редиректа.

      Получается нужно ещё делать проверку на существование ресурса по ссылке
        Александр Мельник
        24 мая 2019, 12:12
        0
        Я не совсем понимаю словосочетание — существование ресурса по ссылке? Это как?
        Речь ведь как раз о том, что ресурс открывается как при нижнем регистре букв в url так и при верхнем, так и при комбинации
        modx.pro/BLOGS
        modx.pro/bLOGS
        modx.pro/blogs
        Я не большой специалист в СЕО, даже меньший чем в программировании. Да и поисковые системы никогда не выдавали нам ошибку о таких вот дублях страниц. Но СЕО это такая штука, что остается им только посочувствовать, мне лично их работа напоминает шаманские танцы с бубном над костром в ожидании того, что это поможет и пойдет дождь. Так и СЕОшники… Каждый раз когда уходит один спец и приходит другой — начинаются новые танцы. То мы переделывали все проекты, чтобы уровень вложенности страниц был не более 3 (представляете себе масштаб работы программной? Около 30 проектов, на 7 разных движках и все переделать так, чтобы нигде страницы не были дальше третьего уровня не сломав сайт.) То приходит другой и говорит, что уровнеь вложенности фигня и нужно вернуть все назад)
          Дмитрий
          24 мая 2019, 12:35
          0
          Выше предложенный вариант реализации подходит для первого случая, сделать редирект.
          Но если будет запрошен несуществующий адрес, вида modx.pro/blogYYY, то сначала будет 301 редирект на modx.pro/blogyyy и только потом 404 ошибка. Вот это с области поискового продвижения ошибка. Нужно сразу отдавать 404.
            Александр Мельник
            24 мая 2019, 12:38
            0
            Я вас понял. Да это существенное замечание, спасибо.
              Добрый день! Тоже встретил такую хотелку… Руки не гребут делать это)
              @Александр Мельник, не поделитесь копипаст-решением (с проверкой без лишнего редиректа)?

              (можно в личку, но у вас она закрыта)
                Александр Мельник
                12 июня 2022, 16:32
                0
                просите Дмитрий, но я уже даже не помню, чем закончилась эта задача. Три долгих года прошло.
                  Загребли руки, раз нет решения готового)

                  MODX::findResource() для проверки существования ресурса пришлось найти и заюзать, работает (однако есть мнение, не проверял, что не будет работать при отключенной карте alias-ов, но в моем проекте этой оптимизации не требуется)

                  Кто будет делать, не забудьте начальный / отрезать в REQUEST_URI, а то с ним не находит!

                  @Сергей Шлоков @Дмитрий @Александр Мельник спасибо за комментарии!
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          10