Web-Server

如何配置 nginx 為靜態站點使用漂亮的 URL?

  • October 10, 2010

我有幾個靜態站點(主要由 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。

我試過Google搜尋,但我發現的只是重寫規則,我覺得這些規則對於我想要做的事情來說太複雜了。

任何幫助將不勝感激。

您應該為此使用 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;
  } 
}

使用靜態位置:

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;
}

引用自:https://serverfault.com/questions/189431