No valid context specified

Короче намудрил я с контекстами.

У меня в одной админке несколько сайтов по контекстам разбросано. Всё работало, кроме загрузки фотографий в ms2Gallery — при загрузке к картинкам добавлялся путь /en/assets вместо /assets/.

Решил я исправить это дело и начал копаться во всём, до чего смог дотянуться: удалил Redirector, переустанавливал и обновлял приложения — ничего не помогало…

Ну в общем я решил заменить ключи контекстов с site-name-ru на site_name_ru — вот тут-то и начались танцы с бубном…

Админка это делать не позволяет, поэтому полез в базу. Пришлось найти абсолютно все совпадения с ключём контекстов во всех таблицах и заменить их на правильные. Всё заменил, но…

Проблема: сейчас в дереве ресурсов админки переименованные контексты не раскрываются, как будто в них нету ресурсов.
  • Чистка кэша, сессий и всего прочего не помогла. context_key у ресурсов понятно уже новый и соответствуют ключу контекстов.
  • При создании нового ресурса в этих контекстах — ресурс создаётся, но в дереве не показывается.
  • При заходе на эти сайты белая страница, а в логи сыпится следующая ошибка:
    [2016-09-06 09:32:37] (ERROR @ /home/s***/www/core/model/modx/modx.class.php : 2302) No valid context specified: ****_***_ru
  • Сайты на модхосте.
Итого: была одна проблема (с путями ms2Gallery), а стало две.

Как заставить систему понимать переименованные контексты?

UPD. Вопрос решен, смотри комментарий Василия
Василий Столейков
06 сентября 2016, 06:49
2
793
0

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

Василий Столейков
06 сентября 2016, 09:57
1
0
Да, и обновление системы через панель хостинга тоже не помогает. Сейчас попробую вручную обновить…
Василий Наумкин
06 сентября 2016, 10:00
+1
Если у твоего контекста базовый url с /en/, то почему его не должно быть у картинок, которые в нём выводятся?

Верни всё как было и поищи в гугле правила rewrite для nginx, чтобы по адресу /en/assets тебе отдавался контент из /assets. Это гораздо проще и правильнее, чем ты уже сейчас намудрил.

Ах, да, еще можно вообще тупо убирать /en у картинок при выводе в чанке, фильтром replace.
    Василий Столейков
    06 сентября 2016, 10:14
    1
    0
    Если у твоего контекста базовый url с /en/, то почему его не должно быть у картинок, которые в нём выводятся?
    У меня в абсолютно всех контекстах base_url == "/". В каком-то контексте по ошибке было /en/, но я это исправил, а глюки остались, хотя и кэш чистил, и админку обновлял и всё такое…

    Верни всё как было и поищи в гугле правила rewrite для nginx
    Спасибо за дельный совет! Не подумал сразу…

    еще можно вообще тупо убирать /en у картинок при выводе в чанке, фильтром replace.
    Но этого не сделаешь для превьюшек в админке. Кстати, это касается и miniShop2 — там точно такая же проблема…
      Василий Наумкин
      06 сентября 2016, 10:40
      2
      +1
      Ну тогда rewrite должен решить все твои проблемы.
      location ~* ^/en/assets/images/ {
          rewrite	^/en/assets/images/(.*)    /assets/images/$1 permanent;
      }

      Кстати, можно сделать еще круче — без редиректа, а просто подставляя нужную директорию, вот так:
      location ~* ^/en/assets/images/(.*) {
          alias /полный_путь_к_файлам_от_корня_сервера/assets/images/$1;
      }
        Василий Столейков
        06 сентября 2016, 10:46
        1
        0
        Спасибо за пример!!! Сделаю это сразу после откатки бэкапа, сейчас проверяю ещё кое-что.
        P.S. Оффтоп: на модхост будет добавляться MODX 2.5.1 или он ещё глючный? Просто там вроде как с адаптивом всё в порядке уже…
        Василий Столейков
        06 сентября 2016, 16:38
        1
        0
        Не помогает ни первый, ни второй варианты с nginx… буду думать дальше…
          Василий Наумкин
          06 сентября 2016, 17:02
          +1
          Да не может такого быть. Я же проверил и первый и второй вариант, прежде чем писать готовое решение.

          Скорее всего у тебя там брузер что-то закэшировал. Пиши в поддержку хостинга, говори какой сайт и какие адреса куда отправить.
            Василий Столейков
            06 сентября 2016, 19:49
            1
            0
            Скорее всего у тебя там брузер что-то закэшировал
            Пробовал на разных браузерах и разных компах.

            Вообще, ради эксперимента я:
            • удалил все контексты кроме web,
            • удалил все кастомные настройки контекста web,
            • удалил все страницы кроме главной,
            • удалил все дополнения, кроме ms2Gallery,
            • удалил все плагины кроме ms2Gallery,
            • сменил link_tag_scheme на full, как советовал Владимир чуть ниже (было -1)
            И после каждого действия, после каждого удалённого приложения я очищал кэш и проверял загрузку в разных браузерах и компах.

            Но проблема осталась!!! При загрузке к картинке добавляется /en/ перед /assets/.

            Под конец, уже взял и переустановил сайт подчистую через панель хостинга — только после этого заработала загрузка…

            Откатил все мои изменения из бэкапа и вернул старый добрый полурабочий сайт.

            Пиши в поддержку хостинга
            Напишу в поддержку хостинга, если не получится, буду переносить сайт на чистую установку вручную (таблицами)…
              Василий Наумкин
              07 сентября 2016, 07:43
              +2
              Проблема в настройке base_url для группы пользователей.

              Если её убрать и перелогиниться, то картинки грузятся нормально.
                Василий Столейков
                07 сентября 2016, 07:50
                1
                0
                О спасибо вам большое! Мне казалось что мистика какая-то творится на сайте…
                Для меня это просто чудо. И как всегда самое непонятное лежит на самом очевидном месте…
                Вопрос решен, благодаря отзывчивой техподдержке хостинга modhost.pro, а в частности тебе, Василий!
    Владимир
    06 сентября 2016, 18:58
    +1
    Извиняюсь, на влезу в вашу беседу. Я указал домен в системной настройке Override Cache URL phpthumbof.cache_url phpthumbof.cache_url site.tld и в pThumb Cache Location pthumb.ptcache_location/assets/image-cache, и нет у меня в путях картинок /en/. Схема URL link_tag_scheme full Это все решило полностью. Все картинки не зависят от контекста.