OVH Community, votre nouvel espace communautaire.

PB avec configuration de Nginx + rewrite + prestashop


laurent69
14/03/2016, 20h24
Bonsoir,

J'ai eu le même problème.
Voici comment je l'ai corrigé :
Dans préférence ,puis produit => Forcer la mise à jour des URL simplifiées : Oui

Maintenant çà fonctionne très bien. Si çà peut aider quelqu'un j'en serai ravi.

Bonne soirée.
Laurent

excellent974
27/04/2012, 00h39
déjà fait
mais marche pas

ps : avec ou sans fichier htaccess
ps 2 :

Finalement, ça l'air de fonctionner avec la configuration suivante :
Il a fallu que je mette les règles d'écriture pour les fichiers statiques dans la conf de Nginx, et laissez les règles d'écriture pour le reste sur le .htaccess

fichier de config nginx :

server {

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;

listen 80 default;
server_name _;
server_name_in_redirect off;
resolver 127.0.0.1;
#### www. redirect - all domains starting with www will be redirected to http://domain. ####
if ($host ~* ^(www\.)(.+)) {
set $rawdomain $2;
rewrite ^/(.*)$ http://$rawdomain/$1 permanent;
}
access_log /var/log/ispconfig/httpd/$host/access.log;
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|d oc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js |swf|flv|mp3)$ {
root /var/www/$host/web;
access_log off;
expires 30d;
}
location / {
root /var/www/$host/web;
index index.html index.htm index.php;
access_log off;
proxy_pass http://127.0.0.1:82/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

Fichier .htaccess incluant les autres règles de réécriture

dam09fr
23/04/2012, 16h56
Vire toutes les règles de rewrite d'Nginx et laisse Apache gérer la réécriture d'URL (ou passe en Full NginX + cgi). Dans tous les cas ne met pas deux fois les règles de réécriture !

Remplace le "AllowOverride All" par "AllowOverride None" pour le répertoire / (par sécurité)

Active la réécriture d'url pour Apache "a2enmod rewrite"

Restart Apache & NginX

excellent974
22/04/2012, 18h21
Hello le forum

Je config actuellement un serveur basé sur :
debian 6
apache 2
nginx
et Prestashop utilisant le REWRITE.
Les options de rewrite ont bien été activées.

Mon problème actuellement est le suivant (je vous expose 4 cas):

Cas 1/ Lorsque Nginx n'est pas installé, tout fonctionne bien, avec ou sans l'option Rewite.

Cas 2/ Lorsque j'installe et configure Nginx, sans la réécriture des liens avec Pretashop : tout fonctionne, tout s'affiche.

Cas 3/ Lorsque je laisse activer le Rewriting, via le BO de Prestashop, mais avec aucune règle dans le fichier de config de Nginx, toutes les pages s'affichent, avec la bonne réécriture de l'URL (accueil, produit, etc.) mais aucune photo ne s'affiche...

Cas 4/ Dès que j'active tout : Nginx + les règles de Rewrite (que j'intègre dans le fichier de config de Nginx), seule la page d'accueil fonctionne, avec les images de la page d'accueil qui s'affichent bien aussi.
Mais les autres pages donnent une erreur "La page n'est pas redirigée correctement".
L'URL de chaque page a bien été réécrite de la bonne manière, mais la page recherchée a un statut "301 Moved". Le serveur tente de lancer 21 fois, et 21 fois la page remonte (avec le "GET") ce statut "301 moved".


Je vous joins ici mes deux fichiers config :

fichier /etc/nginx/sites-available/default
Code:
server {

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;
rewrite ^/([0-9]+)-[a-zA-Z0-9-]*.html /product.php?id_product=$1 last;
rewrite ^/[a-zA-Z0-9-]*/([0-9]+)-[a-zA-Z0-9-]*.html /product.php?id_product=$1 last;
rewrite ^/([0-9]+)-[a-zA-Z0-9-]*(/[a-zA-Z0-9-]*)+ /category.php?id_category=$1&noredirect=1 last;
rewrite ^/([0-9]+)-[a-zA-Z0-9-]* /category.php?id_category=$1 last;
rewrite ^/([0-9]+)__([a-zA-Z0-9-]*) /supplier.php?id_supplier=$1 last;
rewrite ^/([0-9]+)_([a-zA-Z0-9-]*) /manufacturer.php?id_manufacturer=$1 last;
rewrite ^/content/([0-9]+)-([a-zA-Z0-9-]*) /cms.php?id_cms=$1 last;
rewrite ^/content/category/([0-9]+)-([a-zA-Z0-9-]*) /cms.php?id_cms_category=$1 last;
rewrite ^/erreur-404$ /404.php last;
rewrite ^/panier$ /cart.php last;
rewrite ^/contactez-nous$ /contact-form.php last;




        listen   80; ## listen for ipv4
        listen   [::]:80 default ipv6only=on; ## listen for ipv6
        #server_name  localhost;
        server_name www.monsite.fr;
        access_log  /var/log/nginx/monsite.access.log;

        location ~* \.(jpg|jpeg|gif|css|png|js|ico|swf|mp3)$ {
                root   /var/www/monsite;
                expires        365d;
                access_log     off;
        }


        location / {
                proxy_pass http://127.0.0.1:8080;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                access_log off;
        }

        location /doc {
                root   /usr/share;
                autoindex on;
                allow 127.0.0.1;
                deny all;
        }

        location /images {
                root   /usr/share;
                autoindex on;
        }

fichier /etc/apache2/sites-enabled/000-default
Code:
/etc/nginx/sites-available# more /etc/apache2/sites-enabled/000-default

        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/monsite
        
                Options FollowSymLinks
                AllowOverride All
        
        
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        
                AllowOverride All
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

Enfin les logs sous /var/logs ne donnent rien d'explicite... Ne donnent rien tout court même
La log apache2 :

127.0.0.1 - - [22/Apr/2012:18:31:03 +0200] "GET /product.php?id_product=1204 HTTP/1.0" 301 462 "http://www.monsite.fr/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0"


Voilà voilà, ça fait plus d'une semaine que je me prends la tête avec.
Peut-être que quelqu'un trouvera une solution, sait-on jamais !!!