nginx的尾部斜线问题

我googling了很多,发现了几个解决方法,但你必须定义每一个目录。

  • 在Apache上:example.com/hi – > example.com/hi/
  • nginx上:example.com/hi – > Firefox不能在example.com:8888build立到服务器的连接

Apache正在监听的是8888(nginx的:80 – > localhost:8888)

任何想法如何解决这个问题,只是像文件夹一样正常转发?

我有一个与varnish和nginx类似的问题(端口80上的代理服务器在8080上监听nginx),需要添加“port_in_redirect off”。 … server_name_in_redirect需要保持,所以nginx知道它正在处理哪个主机。

以下应该做的伎俩,但它需要更多的思想/工作,因为一次只能使用一个位置块:

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

(未测试)

您可以在服务器部分设置“server_name_in_redirect”

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

这将做的伎俩;-)

HTH。

编辑:只是格式。

这是最适合我的魔法:

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

这里的'if'语句是安全的: http : //wiki.nginx.org/IfIsEvil