代码之家  ›  专栏  ›  技术社区  ›  Doua Beri

将apache http htaccess转换为Prestashop 1.6多存储的nginx配置

  •  1
  • Doua Beri  · 技术社区  · 9 年前

    我运行的是启用多商店的Prestashop 1.6。 默认url为 http://192.168.1.217/prestashop161 我在这个网址上还有一家商店 http://192.168.1.217/prestashop161/shopa

    当您更改设置时,Prestashop会自动创建htaccess文件,但我使用的是nginx,我正在尝试移植配置。

    #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=$1 [QSA,L]
    

    这就是我在nginx中尝试的:

    location /prestashop161 {
        root   E:\servers\htdocs;
        index  index.html index.htm index.php;
        rewrite '^/(shopa)$'     /$1/ redirect;
        rewrite ^/api$ /api/ last;
        rewrite ^/api/(.*)$ webservice/dispatcher.php?url=$1 last;
    }
    
    1 回复  |  直到 9 年前
        1
  •  2
  •   Doua Beri    9 年前

    http://doc.prestashop.com/display/PS16/System+Administrator+Guide#SystemAdministratorGuide-NginxfriendlyURLs

    只有当您启用了Friendly URL时,这才有效,否则它将重定向到无限循环中。

    1. 启用友好URL

    2. 将此代码粘贴到主店铺

      location /prestashop161/{
          root   E:\servers\htdocs;
          index /prestashop161/index.php;
      
          rewrite ^/prestashop161/api/?(.*)$ /prestashop161/webservice/dispatcher.php?url=$1 last;
          rewrite ^/prestashop161/([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /prestashop161/img/p/$1/$1$2.jpg last;
          rewrite ^/prestashop161/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /prestashop161/img/p/$1/$2/$1$2$3.jpg last;
          rewrite ^/prestashop161/([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /prestashop161/img/p/$1/$2/$3/$1$2$3$4.jpg last;
          rewrite ^/prestashop161/([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /prestashop161/img/p/$1/$2/$3/$4/$1$2$3$4$5.jpg last;
          rewrite ^/prestashop161/([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /prestashop161/img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6.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/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7.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/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8.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/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9.jpg last;
          rewrite ^/prestashop161/c/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /prestashop161/img/c/$1$2.jpg last;
          rewrite ^/prestashop161/c/([a-zA-Z-]+)(-[0-9]+)?/.+\.jpg$ /prestashop161/img/c/$1.jpg last;
          rewrite ^/prestashop161/([0-9]+)(-[_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /prestashop161/img/c/$1$2.jpg last;
          try_files $uri $uri/ /prestashop161/index.php?$args;
      }
      
    3. 将此代码粘贴到 shopa

      location /prestashop161/shopa/ {
          rewrite ^/prestashop161/shopa/(.*)$ /prestashop161/$1 last;
          try_files $uri $uri/ /prestashop161/index.php?$args;
      }
      

    就是这样