Не работает сортировка на nginx + fpm

Здравствуйте, после переезда на nginx +fpm сортировка в категориях перебрасывает на главную страницу с урлами вида site.ru/?sort=price&order=asc

если принудительно забить ссылку site.ru/category/subcategory/?sort=price&order=asc - выдает 404 - страница не существует


настройки соответствуют рекомендуемым
https://www.webasyst.ru/developers/docs/tips/nginx-fastcgi/#_ga=1.219077915.325271359.1435744562


1 ответ

  • 1

    Выложите сюда ваш конфиг + основной конфиг nginx.conf

    • +1
      admin33 admin33 5 ноября 2015 05:04 #
      server {
          listen 80;
      
          server_name  site.ru www.site.ru;
          root /var/www/site/;
      
          access_log /var/log/nginx/sitenew.access.log;
          error_log /var/log/nginx/sitenew.error.log;
          index index.php;
      
          try_files $uri $uri/ /index.php?$query_string;
      
          location ~ captcha\.php {
              include /etc/nginx/fastcgi_params;
              fastcgi_pass  unix:/var/run/php5-fpm.sock;
              fastcgi_param SCRIPT_FILENAME $document_root/index.php;
          }
      
          location /index.php {
              include /etc/nginx/fastcgi_params;
              fastcgi_pass  unix:/var/run/php5-fpm.sock;
              fastcgi_param SCRIPT_FILENAME $document_root/index.php;
          }
          
          # for install only
          location /install.php {
              include /etc/nginx/fastcgi_params;
              fastcgi_pass  unix:/var/run/php5-fpm.sock;
          }    
          
          location /api.php {
              include /etc/nginx/fastcgi_params;
              fastcgi_pass  unix:/var/run/php5-fpm.sock;
              fastcgi_param  SCRIPT_NAME /api.php;
              fastcgi_param SCRIPT_FILENAME $document_root/api.php;    
          }    
      
          location ^~ /wa-data/protected/ {
              #return 403;
              #X-Accel-Redirect
              internal;
          }
      
          location ~* ^/wa-(log|config|cache|system)/ {
              return 403;
          }
      
          location ~* ^/wa-data/public/contacts/photos/[0-9]+/ {
               root /var/www/site/;
               access_log off;
               expires  30d;
               error_page   404  =  @contacts_thumb;
          }
      
          location @contacts_thumb {
              include /etc/nginx/fastcgi_params;
              fastcgi_pass  unix:/var/run/php5-fpm.sock;
              fastcgi_param  SCRIPT_NAME  /wa-data/public/contacts/photos/thumb.php;
              fastcgi_param  SCRIPT_FILENAME  $document_root/wa-data/public/contacts/photos/thumb.php;
          }
        
          # photos app
          location ~* ^/wa-data/public/photos/[0-9]+/ {
              access_log   off;
              expires      30d;
              error_page   404  =  @photos_thumb;
          }
      
          location @photos_thumb {
              include /etc/nginx/fastcgi_params;
              fastcgi_pass  unix:/var/run/php5-fpm.sock;
              fastcgi_param  SCRIPT_NAME  /wa-data/public/photos/thumb.php;
              fastcgi_param  SCRIPT_FILENAME  $document_root/wa-data/public/photos/thumb.php;
          }
          # end photos app
          
          # shop app
          location ~* ^/wa-data/public/shop/products/[0-9]+/ {
              access_log   off;
              expires      30d;
              error_page   404  =  @shop_thumb;
          }
          location @shop_thumb {
              include /etc/nginx/fastcgi_params;
              fastcgi_pass  unix:/var/run/php5-fpm.sock;
              fastcgi_param  SCRIPT_NAME  /wa-data/public/shop/products/thumb.php;
              fastcgi_param  SCRIPT_FILENAME  $document_root/wa-data/public/shop/products/thumb.php;
          }
          # end shop app
          
          # mailer app
          location ~* ^/wa-data/public/mailer/files/[0-9]+/ {
              access_log   off;
              error_page   404  =  @mailer_file;
          }
          location @mailer_file {
              include /etc/nginx/fastcgi_params;
              fastcgi_pass  unix:/var/run/php5-fpm.sock;
              fastcgi_param  SCRIPT_NAME  /wa-data/public/mailer/files/file.php;
              fastcgi_param  SCRIPT_FILENAME $document_root/wa-data/public/mailer/files/file.php;
          }
          # end mailer app
      
          location ~* ^.+\.(jpg|jpeg|gif|png|js|css)$ {
              access_log   off;
              expires      30d;
          }
       
          location ~ \.php$ { 
          try_files $uri =404;
          fastcgi_pass unix:/var/run/php5-fpm.sock;
          fastcgi_index index.php;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          include fastcgi_params;
          fastcgi_read_timeout 60;
          }
      
      }
      • +1

        Последний location в официальном примере отсутствует.
        Это к слову о том, что "настройки соответствуют рекомендуемым"...

        А может у вас и еще где-то есть какие-то свои правила или код какой-то кастомный?

        • +1
          admin33 admin33 5 ноября 2015 05:13 #

          Без последнего ничего не работает!

          Никаких правил и кодов больше нет

          • +2

            "Ничего не работает" замечательная фраза, но было бы намного лучше, если бы вы посмотрели и написали сюда, что пишется в error-логи.
            По ошибке можно понять в чём проблема.
            Так же напишите для полноты картины какая у вас OS и версия nginx.

            Представленный в документации конфиг прекрасно работает на многих рабочих серверах.

            Учитывая, что вы говорите, что последнее правило работает, то могу предложить вам попробовать в остальных правилах сделать include так же как и в последнем, то есть

            include /etc/nginx/fastcgi_params;

            заменить на

            include fastcgi_params;

            Последнее правило при этом убрать.

            • +1
              admin33 admin33 6 ноября 2015 03:43 #

              С конфигом вы абсолютно правы - все заработало и без последнего правила!

              Однако проблема сохранилась - ссылки сортировки почему-то все равно неправильно генерятся (site.ru/?sort=price&order=asc ). При ручном вбивании site.ru/category/subcategory/?sort=price&order=asc теперь все нормально сортируется.


              • +1

                Это уже похоже на ошибку темы дизайна.
                Проверьте на теме Default 3.0, там ссылка выглядит так:

                <a href="?sort=total_sales&order=desc">Хиты продаж</a>

                То есть это относительная ссылка относительно текущей страницы.

                • +1
                  admin33 admin33 12 ноября 2015 06:05 #

                  Ссылка такая, но URI почему-то терялось, пришлось извратиться - вручную прописать href=uri?sort=price&order_desc

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите