UMI.CMS 404 (NotFound) для запросов вида "/ulang/

Рейтинг: 0Ответов: 1Опубликовано: 17.08.2023

в консоли браузера и error.log, ошибки 404 для файлов:

  • domain/ulang/ru/common/content/date/emarket?js;92176
  • domain/utype/child/emarket::payment/1
  • domain/udata/users/loadUserSettings/?r=0.09173395147020957

В руководстве "Системные требования" написано следующее:

Если вы настраиваете Nginx на «отдачу статики» — следует учесть, что в UMI.CMS используются запросы вида «/ulang/common.js». Такие директории и файлы не существуют — эти запросы должны проксироваться на бэкэнд. Если вы затрудняетесь в произведении подобной настройки — просто не включайте «*.js» в список «статических файлов» в конфигурационном файле Nginx. Также настоятельно рекомендуется подключить umi.nginx.conf или перенести из него необходимые директивы.

Конфигурация для nginx взята с оф.сайта - https://help.docs.umi-cms.ru/konfiguracionnyj_fajl_nginx/

    location @backend {
            rewrite ^ /index.php?path=$uri&$args;
    }

    location / {
    try_files $uri @backend;
    rewrite ^\/robots\.txt /sbots.php?path=$1 last;
    rewrite ^\/sitemap\.xml /sitemap.php last;
    # rewrite ^\/\~\/([0-9]+)$ /tinyurl.php?id=$1 last;
    rewrite ^\/(udata|upage|uobject|ufs|usel|ulang|utype|umess|uhttp):?(\/\/)?(.*)? /releaseStreams.php?scheme=$1&path=$3 last;
    rewrite ^\/(.*)\.xml$ /index.php?xmlMode=force&path=$1 last;
    rewrite ^(.*)\.json$ /index.php?jsonMode=force&path=$1 last;
    if ($cookie_umicms_session) {
        error_page 412 = @dynamic;
        return 412;
    }
    if ($request_method = 'POST') {
        error_page 412 = @dynamic;
        return 412;
    }
}

location ~* \.js$ {
    rewrite ^\/(udata|upage|uobject|ufs|usel|ulang|utype|umess|uhttp):?(\/\/)?(.*)? /releaseStreams.php?scheme=$1&path=$3 last;
    try_files $uri =404;
}

location @backend: https://ru.stackoverflow.com/a/450146/234134

Каким образом решить проблему с отдачей файлов по путям udata|upage|uobject|ufs|usel|ulang|utype|umess|uhttp используя nginx?

Ответы

▲ 0

методом проб и ошибок, получилось, частичная конфигурация nginx:

        location / {
                try_files $uri @backend;
                rewrite ^\/robots\.txt /sbots.php?path=$1 last;
                rewrite ^\/sitemap\.xml /sitemap.php last;
                rewrite ^\/\~\/([0-9]+)$ /tinyurl.php?id=$1 last;
                # rewrite ^\/(udata|upage|uobject|ufs|usel|ulang|utype|umess|uhttp):?(\/\/)?(.*)? /releaseStreams.php?scheme=$1&path=$3 last;
                rewrite ^\/(.*)\.xml$ /index.php?xmlMode=force&path=$1 last;
                rewrite ^(.*)\.json$ /index.php?jsonMode=force&path=$1 last;
                if ($cookie_umicms_session) {
                        error_page 412 = @dynamic;
                        return 412;
                }
                if ($request_method = 'POST') {
                        error_page 412 = @dynamic;
                        return 412;
                }
        }

        location ~* \.js$ {
                rewrite ^\/(udata|upage|uobject|ufs|usel|ulang|utype|umess|uhttp):?(\/\/)?(.*)? /releaseStreams.php?scheme=$1&path=$3 last;
                try_files $uri =404;
        }