Jump to content

Another NGINX + SSL + REWRITE RULES PROBLEM


Recommended Posts

Hi Everyone , this is my first post, and seems that would be a complex one (hope no).

 

I've being  searching for a good solution about this all combination and after follow:

 

http://www.phamviet.net/2012/06/03/prestashop-rewrite-url-on-nginx/

http://www.nginxtips.com/nginx-configuration-for-prestashop/

http://www.prestashop.com/forums/topic/307168-prestashop-1562-rewrite-urls-over-nginx-install/?hl=%2Bnginx&do=findComment&comment=1554501

 

 

 Non of above work for me at all...

 

so I star experimenting:

 

After configure well all my SSL , CloudFlare , etc.... 

 

I came with this idea:

server {
  listen 80;
  server_name mysuperdomain.com *.mysuperdomain.com;
  rewrite ^ https://$server_name$request_uri? permanent;
}

server {
  # listen 80 deferred; # for Linux
  # listen 80 accept_filter=httpready; # for FreeBSD
  listen 443;

  # The host name to respond to
  server_name mysuperdomain.com *.mysuperdomain.com;

  # Path for static files
  root /sites/mysuperdomain.com/public;

  ssl on;
  ssl_certificate /etc/nginx/ssl/ssl.pem;
  ssl_certificate_key /etc/nginx/ssl/ssl.key;

  # Try static files first, then php
  index index.html index.htm index.php;

  # Specific logs for this vhost
  access_log /sites/mysuperdomain.com/log/log-access.log;
  error_log  /sites/mysuperdomain.com/log/log-error.log error;

  #Specify a charset
  charset utf-8;

  # Redirect needed to "hide" index.php
  location / {
    rewrite ^/([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/$1/$1$2$3.jpg break;
    rewrite ^/([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/$1/$2/$1$2$3$4.jpg break;
    rewrite ^/([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/$1/$2/$3/$1$2$3$4$5.jpg break;
    rewrite ^/([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/$1/$2/$3/$4/$1$2$3$4$5$6.jpg break;
    rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg break;
    rewrite ^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/$1/$2/$3/$4/$5/$6/$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])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /img/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg break;
    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/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg break;
    if (-e $request_filename){
        rewrite ^(.*)$ /index.php break;
    }
    try_files $uri $uri/ /index.php?q=$uri&$args;
}

location /c {
    rewrite ^/c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /img/$1$2$3.jpg break;
    rewrite ^/c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ /img/$1$2.jpg break;
}
location /images_ie {
    rewrite ^/images_ie/?([^/]+)\.(jpe?g|png|gif)$ /js/jquery/plugins/fancybox/images/$1.$2 break;
}

# Don't log robots.txt or favicon.ico files
location ~* ^/(favicon.ico|robots.txt)$ {
    access_log off;
    log_not_found off;
}
# Custom 404 page
error_page 404 /index.php?controller=404;

location ~* ^.+.(gif|jpg|jpeg|png|wmv|avi|mpg|mpeg|mp4|htm|html|js|css|mp3|swf|ico|flv|xml) {
    access_log off;
    expires 30d;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;

    # With php5-cgi alone:
    # fastcgi_pass 127.0.0.1:9000;
    # With php5-fpm:
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_intercept_errors on;
    fastcgi_buffers 8 16k;
    fastcgi_buffer_size 32k;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

# Deny access to .htaccess
location ~ /\.ht {
    deny all;
}

#PHPMYADMIN
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/(.+\.(jpeg|jpg|png|css|gif|ico|js|html|xml|txt))$ {
   root /usr/share/;
}
}
location /phpMyAdmin {
 rewrite ^/* /phpmyadmin last;
}

# Include the basic h5bp config set
include h5bp/basic.conf;
}

What seems pathetically to work only for categories , and not for single product page and also .

 

oh! and when you hit the main domain or go to the home page , this file instead of go to home page it wil download the index.php.

 

So a little help will be amazing ..

 

thanks!!

Edited by LockeAG (see edit history)
Link to comment
Share on other sites

I have my shop in the /shop directory. I found that you need to put the rewrites into the server block, and not in their own location

        #Prestashop SEO URLS
        rewrite ^/shop/api/?(.*)$ /shop/webservice/dispatcher.php?url=$1 last;
        rewrite ^/shop/([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /shop/img/p/$1/$1$2$3.jpg last;
        rewrite ^/shop/([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /shop/img/p/$1/$2/$1$2$3$4.jpg last;
        rewrite ^/shop/([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /shop/img/p/$1/$2/$3/$1$2$3$4$5.jpg last;
        rewrite ^/shop/([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /shop/img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg last;
        rewrite ^/shop/([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /shop/img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg last;
        rewrite ^/shop/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /shop/img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg last;
        rewrite ^/shop/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /shop/img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg last;
        rewrite ^/shop/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ /shop/img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg last;
        rewrite ^/shop/c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ /shop/img/c/$1$2$3.jpg last;
        rewrite ^/shop/c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ /shop/img/c/$1$2.jpg last;
        rewrite ^/shop/images_ie/?([^/]+)\.(jpe?g|png|gif)$ /shop/js/jquery/plugins/fancybox/images/$1.$2 last;
        if (!-e $request_filename) {
                rewrite ^/shop/.*$ /shop/index.php last;
        }
Link to comment
Share on other sites

@matt020983    that seems to solve the category url thanks !

 

But when I click on every single product I get a 404

 

do you have any idea??

The code you posted in the initial message is missing an ! on the if statement:

 if (-e $request_filename){
        rewrite ^(.*)$ /index.php break;
    }

Should be:

        if (!-e $request_filename) {
                rewrite ^/shop/.*$ /shop/index.php last;
        }
Link to comment
Share on other sites

×
×
  • Create New...