Linux nginx将.php URI重定向到友好的对应方

Linux nginx将.php URI重定向到友好的对应方,linux,redirect,nginx,Linux,Redirect,Nginx,我目前正在使用重写来接受不包含.php扩展名的文件请求,但是,我无法找到如何拒绝或重定向到友好版本的.php请求 例如,这就是我想要实现的目标: /contact.php重定向/contact /contact.php/contact.php存在,但只有通过/contact访问才会导致403错误 当前配置: location / { try_files $uri $uri/ @extensionless-php; index index.php; } location ~ .php { try

我目前正在使用重写来接受不包含.php扩展名的文件请求,但是,我无法找到如何拒绝或重定向到友好版本的.php请求

例如,这就是我想要实现的目标: /contact.php重定向/contact /contact.php/contact.php存在,但只有通过/contact访问才会导致403错误

当前配置:

location / {
try_files $uri $uri/ @extensionless-php;
index index.php;
}

location ~ .php {
try_files $uri =404;
fastcgi_pass backend;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location @extensionless-php {
rewrite ^(.*)$ $1.php last;
}

如果你已经成功了,我想你需要的是这一部分:

if ($request_uri ~ ^/(.*)\.php$) {  return 301 /$1;  }
或者,如果您也在使用查询参数:

if ($request_uri ~ ^/([^?]*)\.php($|\?)) {  return 301 /$1?$args;  }
您应该将它放在\.php$位置中,您应该从当前的.php重命名该位置。相信我,它不会产生无限循环


中提供了更多的解释。

您好,虽然我知道您希望重定向到php文件,但为了实现所需的功能,php不涉及或不相关,请删除php标记,因为它不相关:或者更新您的问题,以包含与php相关的内容