如何配置 nginx 以便为静态站点使用漂亮的 URL?

如何配置 nginx 以便为静态站点使用漂亮的 URL?

我有几个静态网站(大部分由 Sphinx 生成),我想将它们托管在我的 VPS 上。我已按照指南安装并配置了 nginx,并且可以成功显示我的网站,但问题是 URL 是绝对的,而且看起来很丑陋。

例如,典型的站点文件夹可能如下所示:

/public_html/index.html /public_html/api.html /public_html/quickstart.html

并将 HTTP 请求 / 将 URL 更改为“http://站点名称/index.html“。我基本上想从 URL 要求中删除所有静态前缀,并强制 nginx 将传入请求路由到 /、/api、/quickstart 到正确的位置,并强制 nginx 在用户访问页面时显示正确漂亮的 URL。

我尝试过用谷歌搜索,但我找到的只是重写规则,我觉得这对于我想要做的事情来说太复杂了。

任何帮助将不胜感激。

答案1

您应该为此使用 try_files。这个想法是,您将创建不带 .html 的 URL,而 Nginx 会默默地添加它。示例配置如下。

server {
   #listen/server_name/root here.

   try_files $uri.html $uri $uri/ @notfound;

   location @notfound {
      alias /your/404/file.html
      return 404;
   } 
}

答案2

使用静态位置:

location / {
        index index.html;
        root /var/www/nginx-default;
}

location /api {
        index api.html;
        alias /var/www/nginx-default;
}

location /quickstart {
        index quickstart.html;
        alias /var/www/nginx-default;
}

正则表达式:

location ~/(.*)$ {
        alias /var/www/nginx-default/$1.html;
}

相关内容