![如何配置 nginx 以便为静态站点使用漂亮的 URL?](https://linux22.com/image/526814/%E5%A6%82%E4%BD%95%E9%85%8D%E7%BD%AE%20nginx%20%E4%BB%A5%E4%BE%BF%E4%B8%BA%E9%9D%99%E6%80%81%E7%AB%99%E7%82%B9%E4%BD%BF%E7%94%A8%E6%BC%82%E4%BA%AE%E7%9A%84%20URL%EF%BC%9F.png)
我有几个静态网站(大部分由 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;
}