最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Nginx 中 URL 重写如何隐藏 PHP 或 HTML 后缀提升网址美观度
时间:2026-08-22 12:07:48 编辑:袖梨 来源:一聚教程网
Nginx 无法隐藏域名后缀,但可通过 try_files 指令安全隐藏 URL 中的 .php 或 .html 后缀,或通过 /index.php 回退实现 index.php 隐藏;推荐用 $uri $uri/ $uri.php$is_args$args 顺序查找,避免 rewrite 循环与路由失效。
Nginx 本身不修改浏览器地址栏显示的域名后缀(如 .com),但能有效隐藏 URL 路径中的 .php 或 .html 后缀,让访问链接更简洁、专业,也利于 SEO 和安全防护。关键不是靠 rewrite 硬套,而是用 try_files 主动查找 + 合理回退,避免重写循环和 404。
用 try_files 隐藏 .php 后缀(推荐)
这是最稳定、无副作用的方式,适合普通 PHP 页面(非框架项目):
- 在 server 或 location 块中添加:
try_files $uri $uri/ $uri.php$is_args$args;
}
-
$uri:先查是否存在同名文件(如 /about → 查找
about) -
$uri/:再查是否为真实目录(如 /blog/ → 查找
blog/目录) -
$uri.php:都失败时,自动尝试加 .php(/about → 实际执行
about.php) - $is_args$args:保留原始查询参数(如 /user?id=123 → 传给 user.php?id=123)
用户始终看到 https://site.com/about,后台静默运行 about.php,无需改代码。
用 try_files + 命名 location 隐藏 .html 后缀
类似逻辑,只需把 .php 换成 .html,并确保 HTML 文件真实存在:
location / {try_files $uri $uri/ $uri.html;
}
- 访问 /news → 尝试 news、news/、news.html(按顺序)
- 只要 news.html 存在,就直接返回,地址栏不变
- 比用 rewrite ^(.*)$ $1.html last 更安全,不会触发无限循环
隐藏 index.php(常用于 Laravel/ThinkPHP)
这不是“去掉后缀”,而是让所有动态请求走统一入口,彻底不暴露 index.php:
location / {try_files $uri $uri/ /index.php?$query_string;
}
- 静态资源(JS/CSS/图片)正常直出
- 不存在的路径(如 /admin/user)内部转发到 /index.php?query_string,由 PHP 框架解析路由
- 必须配合 PHP 开启
pathinfo或正确处理QUERY_STRING,否则路由失效
为什么不建议直接用 rewrite 加后缀?
像 rewrite ^(.*)$ $1.php last; 这类写法风险高:
- 容易造成重写循环:/test → /test.php → 再匹配又加 .php → /test.php.php → 404 或 500
- 无法区分真实存在的 .php 文件和需要补全的路径,逻辑混乱
- 对框架项目会绕过入口文件,破坏路由机制,导致 404
- 调试困难,日志里全是重复重写记录
真正干净的 URL 美化,靠的是精准的文件存在性判断,而不是强行改写路径。
相关文章
- TapTap官方最新版如何下载安装 08-22
- 找不到Tap APP下载安装包如何解决 08-22
- 超级店长网页版在哪里 08-22
- 小米ax3600路由器怎么重启(小米ax3600路由器重启方法) 08-22
- 等等党又输了!GTA5或永久涨价! 08-22
- StarNote如何同时打开两个笔记 08-22