ry.
ry.

Reputation: 31

nginx trailing slash issues

I'm googling a lot and found several workarounds, but you have to define every single directory.

where 8888 is what Apache is listening on (nginx's :80 -> localhost:8888)

Any ideas how to fix this and have it just forward normally like folder?

Upvotes: 3

Views: 3881

Answers (4)

nxmehta
nxmehta

Reputation: 11

This is the magic that works best for me:

try_files $uri $uri/ @redirect;
location @redirect {
    if ($uri !~ '/$') {
        return 301 $uri/$is_args$args;
    }
}

The 'if' statement here is safe per: http://wiki.nginx.org/IfIsEvil

Upvotes: 0

Esparta Palma
Esparta Palma

Reputation: 745

You can set "server_name_in_redirect off" on your server section

server{
  listen 80 default;
  server_name localhost;
  server_name_in_redirect off;

 ...
 ...
}

That will do the trick ;-)

HTH.

Edit: Just format.

Upvotes: 0

sstrudeau
sstrudeau

Reputation: 81

I had a similar problem with varnish and nginx (varnish on port 80 proxying to nginx listening on 8080) and needed to add "port_in_redirect off;" ... server_name_in_redirect needed to stay on so nginx knew which host it was handling.

Upvotes: 2

blueyed
blueyed

Reputation: 27878

The following should do the trick, but it needs more thought/work, because only a single location block will get used at a time:

location ~ ^(.*[^/])$ {
  if (-d $document_root/$1) {
    rewrite ^(.*)$ $1/ permanent;
  }
}

(not tested)

Upvotes: 1

Related Questions