nginx reescreve o diretório no meio do caminho

1

Estou tentando fazer o seguinte redirecionamento nginx

/p/username

para

/profile/username

parece que deve ser simples, mas não consigo descobrir como isolar o nome de usuário que pode ser variável.

    
por Nicolo77 30.12.2011 / 00:16

1 resposta

3

A menos que você realmente precise do nome de usuário para algo, ou precise redirecionar apenas para o local exato e não haja subdiretórios, é extremamente simples - você realmente não precisa procurar o nome de usuário.

rewrite ^/p/(.*)$ /profile/$1 permanent;

Mas, para fins de argumentação, se você precisasse pegar o nome de usuário e, digamos, inserir algo entre o nome de usuário e o resto do caminho, poderia fazer algo assim:

rewrite ^/p/([^/]+)(.*)$ /profile/$1/usersite$2 permanent;

O primeiro par de parênteses irá capturar tudo depois de /p/ até (mas não incluindo) a seguinte barra; o .* irá capturar o resto da string. Em seguida, eles são adicionados novamente em $1 e $2 - então /p/username/some-page.html se torna /profile/username/usersite/some-page.html .

    
por 30.12.2011 / 00:30