Nginx

Nginx 從請求 URI 中提取頂級目錄名稱

  • April 15, 2014

我需要能夠使用來自的頂級目錄$request_uri,例如:

/dir/sub/slug->/dir

我讀了這個問題的答案: How to extract Only the file name from the request uri

# Gets the basename of the original request
map $request_uri $request_basename {
   ~/(?<captured_request_basename>[^/?]*)(?:\?|$) $captured_request_basename;
}

# Gets the basename of the current uri
map $uri $basename {
   ~/(?<captured_basename>[^/]*)$ $captured_basename;
}

它似乎與我需要的很接近,它是如何工作的?是否可以修改以獲取頂級目錄?謝謝!

我認為這樣的事情應該可以解決問題。

在我的範例中,為了測試返回的內容,我將變數添加$topdir到標題中。

map $request_uri $topdir {
  ~(?<captured_topdir>^/[a-zA-Z0-9]+[/]) $captured_topdir;
}

server {
 listen  80;
 root /var/www;
 index  index.html;

 location / {
   add_header X-Top-Dir $topdir;
 }
}
  • http://mydomain.com/dir/sub/slug/page.html應該返回/dir/
  • http://mydomain.com或者http://mydomain.com/page.html不應該返回任何東西

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