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

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


http://www.mydomain.com/indexhtml.html作为http://www.mydomain.com/indexhtml

http://www.mydomain.com/indexphp.php作为http://www.mydomain.com/indexphp

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


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位置放置类似内容,但没有成功。


有什么建议吗?


噜噜哒
浏览 909回答 3
3回答

尚方宝剑之说

无需额外的块和命名的位置以及所有内容。还将index线移到位置块外server {  index index.html index.php;  location / {    try_files $uri $uri/ $uri.html $uri.php$is_args$query_string;  }  location ~ \.php$ {    try_files $uri =404;    # add fastcgi_pass line here, depending if you use socket or port  }}请记住,如果您在同一文件夹中有一个文件夹和一个具有相同名称的文件,例如/folder/xyz/并且/folder/xyz.php如果该文件夹xyz包含index.php或index.html,则将无法运行php文件,请记住这一点。
打开App,查看更多内容
随时随地看视频慕课网APP