nginx 清理 URL 路由器/重写

nginx 清理 URL 路由器/重写

我在 nginx 配置中相对简单的重写规则/路由器方面遇到了困难。

我想要做的是,如果请求的目录或文件“host / my / request / path [/ [index.php]]”不存在,则重写为“host / my / request / path.php”

当前重写适用于:

host
host/
host/my/request/path

但不适用于:

host/my/request/path/

以下是配置的重写部分:

    location / {
             try_files $uri/ $uri $uri.php;
    }

错误日志会报告:

Access forbidden by rule, request: "GET /my/request/path/ HTTP/1.0"

嗯,有没有更好的方法来解决这个问题或者去掉尾随的斜线?

编辑,规则更加详细:

host[/] >  host/index.php
host/index[/] >  host/index.php
host/my/path[/] > if /path/index.php exists: host/my/path/index.php
else host/my/path.php

答案1

解决方案:

https://stackoverflow.com/questions/9557936/nginx-trailing-slash-rewrite-results-in-a-redirect-loop

我补充道

rewrite ^/(.*)/$ /$1;

在第一篇文章中的规则之前,似乎正在发挥作用。

相关内容