ssl - Prestashop 1.6 + Nginx + SSL + 多语言站点 - 重写规则

标签 ssl nginx multilingual prestashop-1.6

我正在努力使用以下设置为 prestashop 设置重写规则

  • Prestashop 1.6
  • SSL
  • 多语言站点(在我的例子中是 fr + en)
  • Nginx 1.4.1(这对我发现的 ssl 设置很重要)

我使用了下面的一些引用资料

http://www.prestashop.com/forums/topic/323391-another-nginx-ssl-rewrite-rules-problem/ http://www.prestashop.com/forums/topic/321261-seo-friendly-nginx-rewrites/ (不是多语言) PRESTASHOP NGINX + REWRITE RULES

然后进入下面的配置。

一切正常,除了我的一些支付模块返回一个 url mysite.com/en/index.php?parameter1=1¶meter2=2

这会触发 404

看起来应该将 url 重写为 mysite.com/index.php?parameter1=1¶meter2=2

我有两个问题:

  1. 哪个规则正在处理像 mysite.com/en/16-crews 这样工作正常的 url? 它被翻译成什么? (我只是想知道它是如何工作的)

  2. 如何设置重写规则 mysite.com/en/index.php?parameter1=1¶meter2=2mysite.com/index.php?parameter1=1¶meter2=2 它还必须与网站 /fr/index.php/index.php

    的法文版一起使用
    server {
    
    listen   80;
    listen  443 ssl;
    server_name  mysite.com www.mysite.com;
    
    ssl on;
    ssl_certificate /etc/nginx/ssl/mysite.crt;
    ssl_certificate_key /etc/nginx/ssl/mysite.key;
    
    access_log  /var/log/nginx/mysite.access.log;
    error_log   /var/log/nginx/mysite.error.log;
    rewrite_log on;
    
    location / {
    root   /srv/d_h2osensations/www/www.mysite.com/htdocs;
    index  index.html index.htm index.php;
    
    rewrite ^/api/?(.*)$ /webservice/dispatcher.php?url=$1 last;
    rewrite ^/([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$1$2.jpg last;
    rewrite ^/([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*.jpg$ /img/p/$1/$2/$1$2$3.jpg last;
    rewrite ^/([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-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-]*)?/[_a-zA-Z0-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-]*)?/[_a-zA-Z0-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-]*)?/[_a-zA-Z0-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-]*)?/[_a-zA-Z0-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-]*)?/[_a-zA-Z0-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-]*)/[_a-zA-Z0-9-]*.jpg$ /img/c/$1$2.jpg last;
    rewrite ^/c/([a-zA-Z-]+)/[a-zA-Z0-9-]+.jpg$ /img/c/$1.jpg last;
    rewrite ^/([0-9]+)(-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*.jpg$ /img/c/$1$2.jpg last;
    try_files $uri $uri/ /index.php?$args;
    }
    
    location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME /srv/d_h2osensations/www/www.mysite.com/htdocs$fastcgi_script_name;
    }
    
    # Deny access to .htaccess
    location ~ /\.ht {
    deny all;
    }
    
    location /phpmyadmin
    { root /usr/share/;
    index index.php index.html index.htm;
    
    location ~ ^/phpmyadmin/(.+\.php)$ {
    try_files $uri =404;
    root /usr/share/;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }
    location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
    root /usr/share/;
    }
    }
    location /phpMyAdmin {
    rewrite ^/* /phpmyadmin last;
    
    }
    
    }
    

提前致谢。 尼克

最佳答案

经过几周的环顾四周,这对我有用

server {
    listen 80;
    #listen [::]:80 default_server ipv6only=on;
    listen  443 default ssl;
    #ssl on;
    ssl_certificate /etc/nginx/ssl/cert.crt;
    ssl_certificate_key /etc/nginx/ssl/cert-key.key;

    access_log  /var/log/nginx/h2o.prod.access.log;
    error_log   /var/log/nginx/h2o.prod.error.log;



    root /var/www/www.mysite.com/htdocs;
    #root /usr/share/nginx/html;
    index index.html index.htm index.php;

    # Make site accessible from http://localhost/
    server_name mysite.com www.mysite.com;


    #Specify a charset
    charset utf-8;

    rewrite ^/([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$1$2$3.jpg last;
    rewrite ^/([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/p/$1/$2/$1$2$3$4.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$5.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$6.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$7.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$8.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$9.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$10.jpg last;

    rewrite ^/c/([0-9]+)(-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*.jpg$ /img/c/$1$2.jpg last;
    rewrite ^/c/([a-zA-Z-]+)/[a-zA-Z0-9-]+.jpg$ /img/c/$1.jpg last;
    rewrite ^/([0-9]+)(-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*.jpg$ /img/c/$1$2.jpg last;


    rewrite ^/order$ /index.php?controller=order last;
    if (!-e $request_filename){
        rewrite ^(.*)$ /index.php last;
    }

    # Redirect needed to "hide" index.php
    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    location ~ /\.ht {
        deny all;
    }
}

关于ssl - Prestashop 1.6 + Nginx + SSL + 多语言站点 - 重写规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25540059/

相关文章:

iis - 每个站点一个 SSL 证书

Nginx 重写触发器下载

seo - 如何添加多种语言的元标记

ssl - 双语域通配符 SSL 证书?

entity-framework - 带有 Entity Framework 4 指南的多语言数据库

ssl - Openfire SSL 证书

ssl - 使用 SSL 的 Quarkus JDBC 连接

java - httpclientandroidlib 上的 TLS 1.1 @ TLS 1.2

ubuntu - letsencrypt certbot 超时错误

django - 创建一个 web url 来监听 redis pubsub 发布的消息