Nginx extrair o nome do diretório superior do URI de solicitação

1

Estou precisando usar o diretório principal do $request_uri , por exemplo:

/dir/sub/slug - > /dir

Eu li a resposta desta pergunta: Como extrair Apenas o nome do arquivo da solicitação 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;
}

E parece estar perto do que eu preciso, como isso funciona? é possível ser modificado para obter o diretório principal? Obrigado!

    
por ayublin 15.04.2014 / 10:06

1 resposta

2

Acho que algo assim deveria resolver o problema.

No meu exemplo, para testar o que foi retornado, adicionei a variável $topdir no cabeçalho.

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 deve retornar /dir/

  • http://mydomain.com ou http://mydomain.com/page.html não deve retornar nada

por 15.04.2014 / 18:24