0

I've been running into some problems with my URL rewrites. When I click a link in my Magento back-end it completely messes up the URL.

We start with this link:

http://icanttellmydomain.nl/index.php/paneel/dashboard/index/key/26f665360ac9f2e3e9b5c69b09‌​7fcb6b/

But we are redirected here:

http://icanttellmydomain.nl/index.php/paneel/permissions_user/index/key/index.php/paneel/system_config/index/key/4015c27aea900ad7fceb13e27b76560c/index.php/paneel/dashboard/index/key/26f665360ac9f2e3e9b5c69b097fcb6b/index.php/paneel/dashboard/index/key/26f665360ac9f2e3e9b5c69b097fcb6b/index.php/paneel/dashboard/index/key/26f665360ac9f2e3e9b5c69b097fcb6b/index.php/paneel/dashboard/index/key/26f665360ac9f2e3e9b5c69b097fcb6b/index.php/paneel/dashboard/index...............

It keeps repeating 'index.php' and the URL's path, looping until it gives me a 500 internal error or "The page isn't redirecting properly".

I'm pretty sure it has to do with my vhost configuration. I tried commenting:

 #Forward paths like /js/index.php/x.js to relevant handler
 #   location ~ .php/ {
 #       rewrite ^(.*.php)/ $1 last;
 #   } 

but it didn't do the trick.

My Vhost:

server {
      listen   80; ## listen for ipv4; this line is default and implied
      listen   [::]:80 default_server ipv6only=on; ## listen for ipv6
      listen 443 default ssl;

root /usr/share/nginx/www/xxxxxxxx/public/;
index index.html index.htm;

# Make site accessible from http://<serverip/domain>/
server_name xxx.xxx.xxx.xxx;

error_log  /var/log/nginx/error.log; #warn; #op warn niveau word er logged
#access_log off; #Disabled voor I/O besparing
access_log /var/log/nginx/access.log;

location / {
   index index.html index.php;
   #autoindex on;
  ## If missing pass the URI to Magento's front handler
   try_files $uri $uri/ @handler;
   expires max; ## 
}

    ## These locations need to be denied
    location ^~ /app/                { deny all; }
    location ^~ /includes/           { deny all; }
    location ^~ /lib/                { deny all; }
    location ^~ /media/downloadable/ { deny all; }
    location ^~ /pkginfo/            { deny all; }
    location ^~ /report/config.xml   { deny all; }
    location ^~ /var/                { deny all; }


## Disable .htaccess and other hidden files
location  /. {
 access_log off;
 log_not_found off;
 return 404;
 deny all;
}

## Magento uses a common front handler
    location @handler {
        rewrite / /index.php;
    }

#Forward paths like /js/index.php/x.js to relevant handler
#   location ~ .php/ {
#       rewrite ^(.*.php)/ $1 last;
#   }

##Rewrite for versioned CSS+JS via filemtime(file modification time)
location ~* ^.+\.(css|js)$ {
rewrite ^(.+)\.(\d+)\.(css|js)$ $1.$3 last;
expires 31536000s;
access_log off;
log_not_found off;
add_header Pragma public;
add_header Cache-Control "max-age=31536000, public";
}

## php-fpm parsing
location ~ \.php.*$ {

## Catch 404s that try_files miss
if (!-e $request_filename) { rewrite / /index.php last; }

## Disable cache for php files
expires        off;

## php-fpm configuration
fastcgi_pass   unix:/var/run/php5-fpm.sock;
fastcgi_param  HTTPS $https if_not_empty;
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
include        fastcgi_params;

## Store code is located at Administration > Configuration > Manage Stores 
fastcgi_param  MAGE_RUN_CODE default;
fastcgi_param  MAGE_RUN_TYPE store;

## Tweak fastcgi buffers, just in case.
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;

Thanks for reading! I'm new to all this stuff so take that into consideration in your replies please.

3

4 Answers 4

1

Posting my working nginx php config, found here: http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/configuring_nginx_for_magento

location  /. { ## Disable .htaccess and other hidden files
    return 404;
}

location @handler { ## Magento uses a common front handler
    rewrite / /index.php;
}

location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler
    rewrite ^(.*.php)/ $1 last;
        }

   location ~ .php$ { ## Execute PHP scripts
    if (!-e $request_filename) { rewrite / /index.php last; } ## Catch 404s that try_files miss

    expires        off; ## Do not cache dynamic content
    fastcgi_pass   unix:/var/run/php5-fpm.sock;
    fastcgi_param  HTTPS on;
    fastcgi_param  HTTPS $https;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_param  MAGE_RUN_CODE store_code; ## Store code is defined in   administration > Configuration > Manage Stores
    fastcgi_param  MAGE_RUN_TYPE store;
    include        fastcgi_params; ## See /etc/nginx/fastcgi_params
}
2
  • Your answer did not help me at all, you just posted the original vhost from the official magento website, obviously that configuration doesn't work for me... I have a different problem that needs more then just a crude copy paste from an example website. Commented May 26, 2014 at 8:01
  • If using this default configuration do you get any errors in nginx error log? Commented May 26, 2014 at 9:43
0

There may be an issue with the try_files directive in your location block. The @handler block is being treated as a URI and is being appended to the URL each time the page is redirected.

You can try changing the try_files directive to use a different @ block, such as @missing, which will return a 404 error if the requested file is not found. This should prevent the looping redirects you are experiencing.

Here is an example of how you could modify your location block:

location / {
   index index.html index.php;
   #autoindex on;
  ## If missing pass the URI to Magento's front handler
   try_files $uri $uri/ @missing;
   expires max; ## 
}

## Magento uses a common front handler
location @missing {
  return 404;
}

Just remember to make a backup of your configuration file before making any changes, in case something goes wrong. You can also try clearing your browser's cache and cookies to ensure the changes take effect.

0

I would do it like this:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com; # Replace with your actual domain name

    root /usr/share/nginx/www/xxxxxxxx/public/;
    index index.html index.php;

    error_log  /var/log/nginx/error.log; # Specify the path to your error log
    access_log /var/log/nginx/access.log;

    location / {
        try_files $uri $uri/ @handler;
        expires max;
    }

    location ^~ /app/                { deny all; }
    location ^~ /includes/           { deny all; }
    location ^~ /lib/                { deny all; }
    location ^~ /media/downloadable/ { deny all; }
    location ^~ /pkginfo/            { deny all; }
    location ^~ /report/config.xml   { deny all; }
    location ^~ /var/                { deny all; }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php5-fpm.sock; # Adjust the PHP version and socket path as needed
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_read_timeout 300; # Increase the timeout if needed
    }

    location ~* \.(css|js)$ {
        rewrite ^(.+)\.(\d+)\.(css|js)$ $1.$3 last;
        expires 31536000s;
        access_log off;
        log_not_found off;
        add_header Pragma public;
        add_header Cache-Control "max-age=31536000, public";
    }

    location @handler {
        rewrite / /index.php;
    }

    location  /. {
        access_log off;
        log_not_found off;
        return 404;
    }
}

server {
    listen 443 ssl;
    server_name yourdomain.com www.yourdomain.com; # Replace with your actual domain name

    ssl_certificate /etc/nginx/ssl/yourdomain.crt; # Specify your SSL certificate file path
    ssl_certificate_key /etc/nginx/ssl/yourdomain.key; # Specify your SSL certificate key file path

    root /usr/share/nginx/www/xxxxxxxx/public/;
    index index.html index.php;

    error_log  /var/log/nginx/error.log; # Specify the path to your error log
    access_log /var/log/nginx/access.log;

    location / {
        try_files $uri $uri/ @handler;
        expires max;
    }

    # Other location blocks and PHP configuration (similar to the previous server block)

    # Redirect HTTP requests to HTTPS
    location / {
        return 301 https://$host$request_uri;
    }
}
-1

Please try those solutions

  1. Disable

    listen [::]:80 default_server ipv6only=on; ## listen for ipv6

  2. Modify

    index index.html index.htm; === index index.php;

  3. Modify

    location ~ .php.*$ { === location ~ .php$ {

  4. I am not clear that part so please try by disabling that

    Rewrite for versioned CSS+JS via filemtime(file modification time) location ~* ^.+.(css|js)$ { rewrite ^(.+).(\d+).(css|js)$ $1.$3 last; expires 31536000s; access_log off; log_not_found off; add_header Pragma public; add_header Cache-Control "max-age=31536000, public"; }

Flush cache and disable cache , Use Private browser for testing

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .