我在 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;
在第一篇文章中的规则之前,似乎正在发挥作用。