You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确配置Nginx的try_files或rewrite规则为访问路径自动加.html后缀

问题根因

你当前配置的@rewrite块中正则规则^(.+)/$仅匹配末尾带斜杠的URI,你访问的/wiki/product这类路径末尾没有斜杠,完全不会触发重写逻辑,所以直接返回404。同时原配置的规则逻辑和你要对齐的Apache重写规则也不匹配。

调整后的配置

root /var/www/html/;
index index.php index.html;

...
    location ^~ /wiki/ {
        # 优先匹配实际存在的文件、目录,不存在则进入重写逻辑
        try_files $uri $uri/ @wiki_rewrite;
    }

    location @wiki_rewrite {
        # 兼容末尾带/和不带/的访问路径,仅对无后缀的路径重写加.html
        rewrite ^/wiki/([^./]+)/?$ /wiki/$1.html last;
        # 如果你需要浏览器地址栏显示带.html的路径,把上面的last替换为permanent即可
    }

规则说明

  • 正则^/wiki/([^./]+)/?$和你原Apache的^([^\.]+)$逻辑完全对齐,只会匹配路径中不带.的请求,不会误处理/wiki/style.css、/wiki/logo.png这类已经带后缀的静态资源
  • last参数代表内部重写,用户浏览器地址栏会保留/wiki/product的形式,访问体验更好
  • 规则仅作用于/wiki路径下,不会影响站点其他目录的配置

生效步骤

配置修改完成后,先执行nginx -t检查配置语法是否正确,确认没有报错后执行nginx -s reload重载配置即可生效。


内容的提问来源于stack exchange,提问作者Kevin Keeney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:18:03