将 apache http htaccess 转换为 Prestashop 1.6 多商店的 nginx 配置

converting apache http htaccess to nginx config for Prestashop 1.6 multi store

我是 运行 启用了多商店的 Prestashop 1.6。 默认 url 是 http://192.168.1.217/prestashop161 我在这 url http://192.168.1.217/prestashop161/shopa

有另一家店

当您更改设置时,Prestashop 会自动创建 htaccess 文件,但是我使用的是 nginx,并且我正在尝试移植配置。 这是在 htacess 中为我生成的:

#Domain: 192.168.1.217
RewriteCond %{HTTP_HOST} ^192.168.1.217$
RewriteRule . - [E=REWRITEBASE:/prestashop161/shopa/]
RewriteRule ^api$ api/ [L]

RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url= [QSA,L]

这是我在 nginx 中尝试过的:

location /prestashop161 {
    root   E:\servers\htdocs;
    index  index.html index.htm index.php;
    rewrite '^/(shopa)$'     // redirect;
    rewrite ^/api$ /api/ last;
    rewrite ^/api/(.*)$ webservice/dispatcher.php?url= last;
}

我根据官方文档弄明白了怎么做:http://doc.prestashop.com/display/PS16/System+Administrator+Guide#SystemAdministratorGuide-NginxfriendlyURLs

这仅在启用友好 URL 时有效,否则它将重定向到无限循环。

步骤如下:

  1. 启用友好 URL

  2. 为主要商店粘贴此代码

    location /prestashop161/{
        root   E:\servers\htdocs;
        index /prestashop161/index.php;
    
        rewrite ^/prestashop161/api/?(.*)$ /prestashop161/webservice/dispatcher.php?url= last;
        rewrite ^/prestashop161/([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /prestashop161/img/p//.jpg last;
        rewrite ^/prestashop161/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /prestashop161/img/p///.jpg last;
        rewrite ^/prestashop161/([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /prestashop161/img/p////.jpg last;
        rewrite ^/prestashop161/([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /prestashop161/img/p/////.jpg last;
        rewrite ^/prestashop161/([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /prestashop161/img/p//////.jpg last;
        rewrite ^/prestashop161/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /prestashop161/img/p///////.jpg last;
        rewrite ^/prestashop161/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /prestashop161/img/p////////.jpg last;
        rewrite ^/prestashop161/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /prestashop161/img/p/////////.jpg last;
        rewrite ^/prestashop161/c/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /prestashop161/img/c/.jpg last;
        rewrite ^/prestashop161/c/([a-zA-Z-]+)(-[0-9]+)?/.+\.jpg$ /prestashop161/img/c/.jpg last;
        rewrite ^/prestashop161/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /prestashop161/img/c/.jpg last;
        try_files $uri $uri/ /prestashop161/index.php?$args;
    }
    
  3. shopa

    粘贴此代码
    location /prestashop161/shopa/ {
        rewrite ^/prestashop161/shopa/(.*)$ /prestashop161/ last;
        try_files $uri $uri/ /prestashop161/index.php?$args;
    }
    

就是这样