Мне нужно иметь возможность использовать верхний каталог из $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;
}
И это похоже на то, что мне нужно, как это работает? можно ли изменить, чтобы вместо этого получить верхний каталог? Спасибо!
Я думаю, что что-то вроде этого должно помочь.
В моем примере, чтобы проверить, что было возвращено, я добавил переменную $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
не должен ничего возвращать