Nginx配置:移除URI中的.html后缀且不修改Href链接
解决Nginx静态页面URI自动移除.html后缀的配置方案
核心思路
要实现两个核心目标,同时兼容本地无服务器场景:
- 用户访问带
.html后缀的链接时,自动重定向到不带后缀的URI(如/about.html→/about) - 用户访问不带后缀的URI时,Nginx能自动匹配对应的
.html文件(如/about→ 读取about.html)
全程无需修改页面原有Href链接。
完整配置示例
在Nginx的server块中添加以下配置:
server { listen 80; server_name your-domain.com; # 替换为你的域名或localhost root /path/to/your/static/files; # 替换为静态文件根目录 # 仅当.html文件真实存在时,重定向到无后缀URI if (-f $request_filename) { rewrite ^/(.*)\.html$ /$1 permanent; } # 处理无后缀请求,自动匹配对应.html文件 location / { try_files $uri $uri.html $uri/ =404; } # 可选:设置默认索引页 index index.html index.htm; }
关键细节说明
- 避免重定向循环的核心:
if (-f $request_filename)的判断是关键——只有当请求的.html文件真实存在时,才执行重定向,彻底杜绝了无效重定向引发的循环问题。 - 静态文件匹配逻辑:
try_files指令会依次尝试:直接访问请求URI → 尝试添加.html后缀访问 → 尝试访问目录 → 返回404,确保无后缀URI能正确加载对应静态文件。 - 永久重定向的优势:
permanent返回301状态码,既利于搜索引擎收录,也能让浏览器缓存重定向规则,减少重复请求。
本地兼容说明
由于页面原有Href链接仍保留.html后缀,本地无服务器时直接打开静态文件,链接能直接指向对应的.html文件,完全不影响本地预览;部署到Nginx后,会自动完成后缀移除的重定向,完美兼容两种场景。
内容的提问来源于stack exchange,提问作者loveBytes
相关产品推荐
相关产品推荐

