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

rde*_*ges 7 rewrite nginx web-server

我有几个静态站点(主要由 Sphinx 生成),我试图在我的 VPS 上托管它们。我已经按照指南安装和配置了 nginx,我可以成功显示我的站点,但问题是 URL 是绝对的,而且看起来很难看。

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

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

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

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

任何帮助将不胜感激。

Mar*_*ald 7

您应该为此使用 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;
   } 
}
Run Code Online (Sandbox Code Playgroud)