小编典典

如何使用NGINX从网址中同时删除.php和.html扩展名?

html

我希望我的nginx使显示的所有URL干净。

通过一些研究,我使第一个案例奏效。它是通过以下配置完成的:

location / {
    root   html;
    index  index.html index.htm index.php;
    try_files $uri.html $uri/ =404; 
}

它适用于将indexhtml.html显示为indexhtml,但.php则没有任何反应。如果我将$uri.html更改为$uri.php,则它不适用于.html和.php。我已经尝试在php位置放置类似内容,但没有成功。

有什么建议吗?


阅读 370

收藏
2020-05-10

共1个答案

小编典典

根据我的研究,如果您将/etc/nginx/conf.d/domain.tld.conf文件附加为以下内容:

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

location ~ \.php$ {
    try_files $uri =404;
}

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

然后重新启动nginx并尝试一下。希望这会对您有所帮助!

2020-05-10