首页 >后端开发 >php教程 >如何使用 NGINX 从 URL 中删除 .php 和 .html 扩展名?

如何使用 NGINX 从 URL 中删除 .php 和 .html 扩展名?

Patricia Arquette
Patricia Arquette原创
2024-11-16 19:42:031029浏览

How to Remove .php and .html Extensions from URLs Using NGINX?

如何使用 NGINX 从 URL 中删除 .php 和 .html 扩展名

简介

在提供 Web 内容时,出于美观或安全原因,可能需要在 URL 中隐藏文件扩展名。这可以使用流行的 Web 服务器软件 NGINX 来实现。

问题

目标是从 URL 中删除 .php 和 .html 扩展名,同时保留其功能。例如,URL http://www.mydomain.com/indexhtml.html 应显示为 http://www.mydomain.com/indexhtml,而 http://www.mydomain.com/indexphp.php 应显示为显示为http://www.mydomain.com/indexphp。

解决方案

可以使用以下NGINX配置来实现所需的效果结果:

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 ^(.*)$ .php last;
}

说明

  • 位置 /: 此块适用于对网站根目录的所有请求。
  • try_files: 该指令尝试查找文件由 $uri 指定。如果该文件不存在,它会尝试查找 $uri.html 或同名目录。如果两者都不存在,它将把请求传递给 @extensionless-php 位置块。
  • index: 该指令指定当 $uri 指向目录时要提供的默认文件。
  • location ~ .php$: 此块匹配以以下结尾的请求.php.
  • try_files $uri =404: 如果 URI 恰好是 .php 文件(不包括目录),则此指令将返回 404 错误。
  • location @extensionless-php: 这个块是重新布线的地方
  • rewrite: 该指令将请求重写为添加了 .php 扩展名的 URI。最后一个标志可防止进一步重写。

通过实施此配置,.php 和 .html 扩展名都将自动从 URL 中删除,从而提供干净且用户友好的浏览体验。

以上是如何使用 NGINX 从 URL 中删除 .php 和 .html 扩展名?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn