Nginx - 如果它不是目录,则删除尾部斜杠

时间:2018-04-10 22:32:05

标签: nginx

我对重定向没有任何问题,但是当我取消注释2行时,"如果文件夹不存在"检查,我在任何页面上都收到404错误。我不明白为什么,这是它的基本功能。

我需要将带有尾部斜杠的所有请求重定向到没有它的URL。唯一的例外是当存在具有该URL的文件夹时。

location / {
  #if (!-d $request_filename) {
    rewrite ^/(.*)/$ /$1 permanent;
  #}

  index  index.php index.html index.htm;
  try_files $uri $uri/ /index.php?q=$request_uri;
}

1 个答案:

答案 0 :(得分:0)

关于if的使用,您应该阅读this caution

你可以尝试另一种方法,只有在 try_files处理了它可以执行的URI之后才重写

location {
    index index.php index.html index.htm;
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^/(.*)/$ /$1 permanent;
    rewrite ^ /index.php?q=$request_uri last;
}

有关详情,请参阅this document