Nginx

Nginx 友好的 URL 重寫規則

  • January 24, 2019

我最近從 Apache 遷移到 Nginx,性能無可挑剔。

該站點是一個下載伺服器(主要是),帶有自定義 PHP 腳本。

一些範例 URL 如下所示:

https://sub.example.com
https://sub.example.com/index.php?dir=foo1/
https://sub.example.com/index.php?dir=foo2/
https://sub.example.com/index.php?dir=foo2/bar1/
https://sub.example.com/index.php?dir=foo2/bar2/

我想讓它們成為友好的 URL,因此上面的內容變為:

https://sub.example.com
https://sub.example.com/foo1/
https://sub.example.com/foo2/
https://sub.example.com/foo2/bar1/
https://sub.example.com/foo2/bar2/

請注意我們的 PHP 腳本產生的斜杠。
該目錄可以使用或不使用該斜杠(手動鍵入 URL 時)訪問,並且需要在重寫後使用或不使用該斜杠進行訪問。

關於 Nginx 的重寫配置有什麼想法嗎?

您可以使用try_files來改變文件系統上實際存在的文件以及您喜歡作為參數提供的 URI,例如您的 /foo1/。

location = / {
 try_files $uri /index.php?dir=$uri;
}

在 PHP 中,這會產生:

echo $_GET['dir'];
# /foo1/

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