如何在Nginx上将php扩展重写为无尾



我正试图让我的php文件在浏览器中不带.php扩展名的情况下运行,并将所有文件重定向到非.php

我已经设置好了,两者都可用。在浏览器上使用.php而不使用.php。但现在只需要重写一下。

你能帮我解决他们的问题吗?

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

向致以最良好的问候

您可能有一个location ~ .php块来处理以.php结尾的URI。您应该在该块中包含一个try_files $uri =404;语句,以避免将不受控制的请求传递给PHP。

您还可以向该块添加internal指令,这将阻止对.phpURI的外部访问,这样只有您的无扩展PHP URI才能工作。有关详细信息,请参阅本文档。

例如:

location ~ .php$ (
internal;
try_files $uri =404;
...
}

如果您想在无意中出现以.php结尾的URI时将浏览器重定向为使用无扩展PHP,则需要查看原始请求URI,否则将面临重定向循环的风险。

例如:

if ($request_uri ~ .php($|?))
{
rewrite ^(.*).php$ $1 permanent;
}

关于if的使用,请参阅此注意事项。

最新更新