Ошибка 404 для некоторых внутренних страниц под-магазина в magento с nginx - PullRequest
0 голосов
/ 02 марта 2020

Я не могу получить доступ к некоторым внутренним страницам моего магазина, однако отключение web / seo / use_rewrites работает отлично.

Я думаю, что это какая-то nginx конфигурация, которая не правильно, я пытался создать переписчик, но есть много мест.

Вот мой конф:

upstream fastcgi_backend {
    server unix:/run/php-fpm/www.sock;
}

server {

    listen 80 reuseport default_server;

    server_name  _;

    root /var/www;

    index index.html index.php;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ .php/ {
          rewrite ^(.*.php)/ $1 last;
    }

    location ~ (index|get|static|errors/report|errors/404|errors/503|health_check)\.php {
        fastcgi_pass    fastcgi_backend;
        fastcgi_index  index.php;

        fastcgi_buffers 1024 4k;

        fastcgi_param  PHP_FLAG  "session.auto_start=off \n suhosin.session.cryptua=off";
        fastcgi_param  PHP_VALUE "memory_limit=768M \n max_execution_time=18000";
        fastcgi_read_timeout 600s;
        fastcgi_connect_timeout 600s;

        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;        
    }

    error_log /var/log/nginx/debug.log debug;  
    access_log /var/log/nginx/debug.log;
}

, если мне удалось поставить переписчик, добавив индекс. php после каждой подпапки папки , я думаю, что проблема будет решена.

Я пытался создать правило, чтобы всегда добавлять индекс. php, однако он загружается вместо выполнения.

location / {
    try_files $uri $uri/ /index.php$is_args$args @fallback;
}

location @fallback {
    rewrite ^/(\w*)/(.*)$ /$1/index.php/$2 last;
}

1 Ответ

0 голосов
/ 03 марта 2020

Хорошо, nginx читает местоположения в том порядке, в котором они написаны, поэтому мне нужно было создать правило для под-магазина, и мне пришлось изменить его порядок, чтобы не было бесконечного l oop из правила.

Вот что я сделал:

location ~ (index|get|static|errors/report|errors/404|errors/503|health_check)\.php {
    fastcgi_pass    fastcgi_backend;
    fastcgi_index  index.php;

    fastcgi_buffers 1024 4k;

    fastcgi_param  PHP_FLAG  "session.auto_start=off \n suhosin.session.cryptua=off";
    fastcgi_param  PHP_VALUE "memory_limit=768M \n max_execution_time=18000";
    fastcgi_read_timeout 600s;
    fastcgi_connect_timeout 600s;

    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include fastcgi_params;        
}

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

location ~ ^/([a-z]+)/(.*)$ {
  try_files  $uri   $uri/ /$1/index.php/$2?$query_string;
}

location ~ .php/ {
      rewrite ^(.*.php)/ $1 last;
}
...