我需要能够使用顶级目录$request_uri
,例如:
/dir/sub/slug
->/dir
我读了这个问题的答案: 如何从请求 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;
}
它似乎与我需要的很接近,它是如何工作的?是否可以修改以获取顶级目录?谢谢!
答案1
我认为这样的事情应该可以解决问题。
在我的示例中,为了测试返回的内容,我将变量添加$topdir
到了 Header 中。
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
应该不返回任何内容