Почему редирект не работает в Magento 2 при попытке перейти на /pub/?

Я установил шаблон Magento 2.4.5 и настроил права на файлы и папки в соответствии с документацией. Выполнил все стандартные команды, и все кажется работает, но в консоли я получаю следующие ошибки.

URL показывает, что путь к файлам выглядит как /static/frontend/bs_rubix/bs_rubix1/en_US/Rokanthemes_RokanBase/css/jquery.fancybox.css и так далее. При проверке через FTP я вижу, что все эти файлы, которые выдают ошибку 404, находятся в папке pub/static/frontend/bs_rubix/bs_rubix1/en_US/Rokanthemes_RokanBase/css/jquery.fancybox.css.

Логично предположить, что не срабатывает перенаправление, которое, вероятно, должно происходить из pub вне pub.

Мой сервер работает на Nginx, и в конфигурационном файле у меня есть следующие строки:

```nginx
location /pub/media {
    try_files $uri $uri/ /get.php?$args;
}

location /pub/static {
    try_files $uri $uri/ /static.php?$args;
}
```

Я перезагружал сервер и Nginx. Это моя первая работа с Magento, и я не могу понять, почему перенаправление не работает. Я попробовал очистить кеш, использовал `deploy -f` и другие предложенные в чате gpt4 методы, но результат остается тем же: стили и скрипты не загружаются.
Изображение к вопросу
  • 5 января 2024 г. 17:28
Ответы на вопрос 1
Возможно, проблема заключается в неверной настройке серверного блока Nginx для Magento 2. Также убедитесь, что Magento установлен с использованием правильного метода, без ошибок на этапе установки и что магазин настроен для запуска из корневой директории, а не из `/pub`.

Согласно официальной документации Magento 2 для Nginx, вот основная часть конфигурации серверного блока, которая должна позволить корректно обрабатывать статические ресурсы из папки `/pub`:

```nginx
server {
    ...
    set $MAGE_ROOT /path/to/magento2;
    set $MAGE_MODE developer; # или production

    include /path/to/magento2/nginx.conf.sample;
    ...
}
```

Ваш конфигурационный файл должен указывать на `nginx.conf.sample`, который располагается в корневой директории Magento. Этот файл уже имеет правильную конфигурацию для обработки статических файлов и других маршрутов Magento.

Если вы уже используете `nginx.conf.sample`, убедитесь, что `root` указывает на директорию `/pub` и что ваша конфигурация корректно обрабатывает запросы.

Полная конфигурация Nginx должна содержать что-то вроде этого для корректной работы:

```nginx
root $MAGE_ROOT/pub;
...
location / {
    try_files $uri $uri/ /index.php?$args;
}

location /pub/ {
    alias $MAGE_ROOT/pub/;
    add_header X-Frame-Options "SAMEORIGIN";
}
...

location /static/ {
    # Uncomment the following line in production mode
    # expires max;

    # Remove signature of the static files that is used to overcome the browser cache
    location ~ ^/static/version {
        rewrite ^/static/(version\d*/)?(.*)$ /static/$2 last;
    }

    location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2|html|json)$ {
        add_header Cache-Control "public";
        add_header X-Frame-Options "SAMEORIGIN";
        expires +1y;

        if (!-f $request_filename) {
            rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
        }
    }
    location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
        add_header Cache-Control "no-store";
        add_header X-Frame-Options "SAMEORIGIN";
        expires off;

        if (!-f $request_filename) {
            rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
        }
    }
    if (!-f $request_filename) {
        rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
    }
    add_header X-Content-Type-Options "nosniff";
}

# PHP entry point for main application
location ~ (index|get|static|report|404|503)\.php$ {
    ...
    fastcgi_pass   fastcgi_backend;
    ...
}

...
```

В конфигурации выше `$MAGE_ROOT` должен быть определён в `server` блоке и указывать на корневую директорию установки Magento.

Убедитесь, что после внесения изменений в конфигурацию Nginx, вы перезагрузите или перечитали конфигурационный файл Nginx:

```bash
sudo nginx -t # проверьте конфигурацию
sudo systemctl reload nginx # перезагрузите Nginx, если конфигурация верна
```

Если после этого статические файлы всё еще не подгружаются, проверьте разрешения файлов и владельцев директорий в вашей папке Magento, а также у
Похожие вопросы