404 на поддомене

Как на поддомене настроить редирект на страницу ошибки основного домена?

Сейчас получается так:
1. в конфиге указан Id страницы 404
2. 404 осн. сайта — сайт.ру/404.хтмл
3. 404 поддомена получается пд.сайт.ру/404.хтмл
вот как сделать, чтобы 404 поддомена была сайт.ру/404.хтмл?
Пётр Молчанов
04 декабря 2015, 08:29
modx.pro
2 770
0

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

Максим Кузнецов
04 декабря 2015, 16:57
0
Создаете плагин на событие OnPageNotFound. В нем проверяете контекст при помощи $modx->context->key и если контекст относится к поддомену, то выполняете $modx->sendRedirect() на нужную страницу основного домена.
    Воеводский Михаил
    05 декабря 2015, 14:19
    +1
    Работать будет, но это не очень корректно. Получается, что вместо показа 404 мы отправляем на 404.

    А что пользователю делать, если нужно продолжить изучение сайта на поддомен?

    Наиболее правильным здесь будет создание отдельной 404 в контексте поддомена и указание ее в аналогичной системной настройке в свойствах контекста.

    Кстати, если не требуется сохранять навигацию поддомена, а можно спокойно показать 404 основного сайта, то включите системную настройку. В ее названии присутствует across_context. Когда найдете, напишите для истории точное название.
      Пётр Молчанов
      07 декабря 2015, 10:56
      0
      Просто у мя ссылки на стили на странице 404 стоят относительные (вернее генерируются они такими с помощью MinifyX), соответственно на поддомене эти пути становятся некорректными. В этом и проблема…
        Воеводский Михаил
        07 декабря 2015, 10:58
        0
        Перечитал еще раз вопрос.
        Никак не сделать. Максим правильно сказал, что здесь только вариант с перенаправлением на основной домен на 404 страницу. Но! В таком случае 404 будет отображаться уже не с 404 кодом. А это и есть некорректность.
          Пётр Молчанов
          07 декабря 2015, 11:01
          0
          Да, согласен… Поисковикам будет отдаваться 301 ((((
            Максим Кузнецов
            07 декабря 2015, 11:33
            0
            Можно попробовать на событие OnPageNotFound проверять контекст или адрес запроса. Если запрос не в основном контексте -> $modx->switchContext('web') и дальше ничего не делаем, чтобы юзер получил 404.

            Не проверял, но должно сработать.

            Просто у мя ссылки на стили на странице 404 стоят относительные (вернее генерируются они такими с помощью MinifyX)
            Тег base не помогает решить проблему?
              Пётр Молчанов
              07 декабря 2015, 11:37
              0
              Тег base не помогает решить проблему?

              он-то всегда указан, но, почему-то, не помогает в данном случае. я эту ошибку аще нашел по логам (кто-то попадал на пд.сайт.ру/404.хтмл и в логи сыпались ошибки, что не существует css и js по указанному пути)
                Максим Кузнецов
                07 декабря 2015, 11:40
                0
                Ну, обновления для minifyx довольно редко выходят — можете изменить эту строчку для реализации абсолютного пути.
            Максим Кузнецов
            07 декабря 2015, 12:10
            +2
            $modx->sendRedirect($redirect_page, array('responseCode'  => 'HTTP/1.1 404 Not Found'));
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      9