【问题标题】:Nginx rewrite rules for prestashop, how to setup, debug and enable?Prestashop 的 Nginx 重写规则,如何设置、调试和启用?
【发布时间】:2012-09-29 17:14:54
【问题描述】:

出于性能原因,我想从 Apache 更改为 Nginx+Php-Fpm。目前我可以看到我网站的主页(在测试环境中),但任何在 Apache 中工作的友好 url 现在都不起作用。

我已经将规则转换为 nginx 规则,但我没有任何方法来测试它,因为每次点击网站的某些 url 都会变成我的浏览器下载 php 文件!

例如

我点击 www.misite.com/autentication 并且我的浏览器下载了一个 php 文件:-/

环境测试是

  • PHP 5.3.17 (cli)(构建时间:2012 年 9 月 13 日 06:45:07) 版权所有 (c) 1997-2012 PHP 集团 Zend Engine v2.3.0,版权所有 (c) 1998-2012 Zend Technologies

  • nginx -v nginx版本:nginx/1.0.15

这是我的 nginx 虚拟主机配置:

server {
        server_name     site.com www.site.com;
        root            /srv/www/site.com/httpdocs;
        access_log      /srv/www/site.com/log/access.log;
        error_log       /srv/www/site.com/log/error.log;
        rewrite_log on;
        location / {
                index  index.html index.htm index.php;
                rewrite ^/([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1-$2$3.jpg? break;
        rewrite ^/([0-9]+)\-([0-9]+)/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1-$2.jpg? break;
        rewrite ^/([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$1$2.jpg? break;
        rewrite ^/([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-]*\.jpg$ /img/p/$1/$2/$1$2$3.jpg? break;
        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? break;
        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? break;
        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? break;
        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? break;
        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? break;
        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? break;
        rewrite ^/c/([0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/c/$1$2.jpg? break;
        rewrite ^/c/([a-zA-Z-]+)/[a-zA-Z0-9-]+\.jpg$ /img/c/$1.jpg? break;
        rewrite ^/([0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-]*\.jpg$ /img/c/$1$2.jpg? break;
        rewrite ^/([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$1 break;
        rewrite ^/[a-zA-Z0-9-]*/([0-9]+)\-[a-zA-Z0-9-]*\.html /product.php?id_product=$1 break;
        rewrite ^/([0-9]+)\-[a-zA-Z0-9-]*(/[a-zA-Z0-9-]*)+ /category.php?id_category=$1&noredirect=1 break;
        rewrite ^/([0-9]+)\-[a-zA-Z0-9-]* /category.php?id_category=$1 break;
        rewrite ^/([0-9]+)__([a-zA-Z0-9-]*) /supplier.php?id_supplier=$1 break;
        rewrite ^/([0-9]+)_([a-zA-Z0-9-]*) /manufacturer.php?id_manufacturer=$1 break;
        rewrite ^/content/([0-9]+)\-([a-zA-Z0-9-]*) /cms.php?id_cms=$1 break;
        rewrite ^/content/category/([0-9]+)\-([a-zA-Z0-9-]*) /cms.php?id_cms_category=$1 break;
        rewrite ^/pagina-no-encuentra$ /404.php break;
rewrite ^/direccion$ /address.php break;
        rewrite ^/direcciones$ /addresses.php break;
        rewrite ^/autenticacion$ /authentication.php break;
        rewrite ^/mas-vendidos$ /best-sales.php break;
        rewrite ^/carro-de-la-compra$ /cart.php break;
        rewrite ^/contactenos$ /contact-form.php break;
        rewrite ^/descuento$ /discount.php break;
        rewrite ^/estado-pedido$ /guest-tracking.php break;
        rewrite ^/historial-de-pedidos$ /history.php break;
        rewrite ^/identidad$ /identity.php break;
        rewrite ^/fabricantes$ /manufacturer.php break;
        rewrite ^/mi-cuenta$ /my-account.php break;
        rewrite ^/nuevos-productos$ /new-products.php break;
        rewrite ^/carrito$ /order.php break;
        rewrite ^/devolucion-de-productos$ /order-follow.php break;
        rewrite ^/pedido-rapido$ /order-opc.php break;
        rewrite ^/vales$ /order-slip.php break;
        rewrite ^/contrasena-olvidado$ /password.php break;
        rewrite ^/promocion$ /prices-drop.php break;
        rewrite ^/buscar$ /search.php break;
        rewrite ^/mapa-del-sitio$ /sitemap.php break;
        rewrite ^/tiendas$ /stores.php break;
        rewrite ^/proveedores$ /supplier.php break;
        error_page 404 = /404.php;
        }
        location ~ \.php$ {
                include /etc/nginx/fastcgi_params;
                fastcgi_pass  127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        }
}

最糟糕的问题是我没有调试问题的经验:-/ Nginx 非常新 任何意见将不胜感激,

谢谢

【问题讨论】:

  • PS:实际上,行为是像 /authentication 这样的 URL 使浏览器下载文件,像 /some-product.html 这样的 URL 得到 404 错误,所以,我可以确认重写不起作用: (
  • 您能说说它是哪个 prestashop 版本吗?

标签: nginx rewrite prestashop


【解决方案1】:

好的,我已经解决了我自己的问题!顺便说一句很简单,只是改变规则的位置

我已经移动了所有的规则

location /{
.... rules...
}

server {

...here rules works...

}

然后我重新加载 nginx 就可以了!

服务 nginx 重新加载

我希望这对像我这样绝望的人有用。

最好的问候,

鲁本

【讨论】:

    猜你喜欢
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多