Prestashop 1.7.5.1 和 Nginx

Prestashop 1.7.5.1 和 Nginx

我在 FreeBSD 12 上安装了最新版本的 Prestashop,并安装了 NGINX 和 MySQL。安装过程非常顺利,但是 Prestashop URL 出现了一些问题。

前台商店运行正常,但管理区域中的某些链接可以正常使用,而其他链接则出现 404 错误。

在具有如下 URL 的菜单项上:

http://store.mysite.com/admin012m0ojju/index.php?controller=AdminContacts&token=c931df617c24255d7b5eafd4d48aXXXX

但是,管理区域运行良好,菜单项带有如下链接:

http://store.mysite.com/admin012m0ojju/index.php/configure/shop/customer-preferences/?_token=7t4DT8jf-KWSBXxegnntVE6gO7hpRieXVem-XXXX

我得到一个 404 页面。

很明显 NGINX 中的 URL 重写有问题,但在 Google 上搜索了几个小时后,我决定寻求帮助......

这是我的 nginx.conf 部分

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

server {
            listen 80;
            listen 443 ssl;
            ssl_certificate         /usr/local/etc/letsencrypt/live/store.mysite.com/fullchain.pem;
            ssl_certificate_key     /usr/local/etc/letsencrypt/live/store.mysite.com/privkey.pem;
            server_name store.mysite.com;
            index index.php index.html index.htm;
            root /var/www/prestashop;  
            location / {
                    rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;
                    rewrite ^/([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$1$2.jpg last;
                    rewrite ^/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$1$2$3.jpg last;
                    rewrite ^/([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$1$2$3$4.jpg last;
                    rewrite ^/([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$1$2$3$4$5.jpg last;
                    rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6.jpg last;
                    rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7.jpg last;
                    rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8.jpg last;
                    rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9.jpg last;
                    rewrite ^/c/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last;
                    rewrite ^/c/([a-zA-Z-]+)(-[0-9]+)?/.+\.jpg$ /img/c/$1.jpg last;
                    rewrite ^/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/c/$1$2.jpg last;
                    try_files $uri $uri/ /index.php?$args;  
            }
            location ~ \.php$ {
                    root    /var/www/prestashop;
                    fastcgi_pass   fastcgi_backend;
                    fastcgi_index  index.php;
                    #fastcgi_param SCRIPT_FILENAME $request_filename;    
                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                    #fastcgi_param REQUEST_URI $uri?$args;
                    include        fastcgi_params;
            }
        }

有人知道如何修复重写吗?

答案1

敲了敲脑袋之后,我好像已经解决了这个问题:

将其添加到我的 nginx.conf 中:

location ~ /(sell|improve|configure|international|_profiler|product|feature|attribute|supplier|combination|specific-price)/(.*)$ {
      try_files $uri $uri/ /index.php?q=$uri&$args $admin_dir/index.php$is_args$args;
    }

相关内容