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.

Pothi Kalimuthu
  • 6,117
  • 2
  • 26
  • 38
Stefan Grob
  • 1
  • 1
  • 1

3 Answers3

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.

unixoid
  • 106
  • 2
0

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
}
Taras Chuhay
  • 645
  • 3
  • 9
  • 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. – Stefan Grob May 26 '14 at 08:01
  • If using this default configuration do you get any errors in nginx error log? – Taras Chuhay May 26 '14 at 09:43
-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

Kernelv5
  • 197
  • 6