como remover o bloco de localização de $ uri na configuração nginx?

12

Eu tenho uma reescrita no meu arquivo conf ngix que funciona corretamente, exceto que parece incluir o bloco de localização como parte da variável $ uri. Eu só quero o caminho depois do bloco de localização. Meu código de configuração atual é:

location /cargo {
    try_files $uri $uri/ /cargo/index.php?_REWRITE_COMMAND=$uri&args;
}

Usando um url de exemplo de http://localhost/cargo/testpage , o redirecionamento funciona, no entanto, o valor do parâmetro "_REWRITE_COMMAND" recebido pelo meu arquivo php é "/ cargo / testpage". Eu preciso retirar o bloco de localização e só tenho "testpage" como o $ uri

Tenho certeza de que há uma sintaxe regex para dividir o $ uri e atribuí-lo a uma nova variável usando $ 1 $ 2 etc, mas não consigo encontrar nenhum exemplo para fazer apenas uma atribuição de variável usando um regex que não faz parte de uma declaração reescrita. Eu tenho procurado e tentando por horas e eu simplesmente não consigo superar este último passo.

Eu também sei que eu poderia tirar isso do código do aplicativo, mas a razão pela qual eu quero tentar consertá-lo no nginx conf é por razões de compatibilidade, pois ele também roda no Apache. Eu também devo dizer que descobri uma maneira realmente hacky de fazê-lo, mas envolve uma instrução "if" para verificar a existência de arquivos e a documentação especificamente diz que não faz isso dessa maneira.

    
por Jason 06.12.2012 / 19:47

2 respostas

13

Olhando em volta, eu acho que usar um local de regexp com capturas é o mais fácil. Adaptando o seu exemplo, acabo com:

location ~ ^/cargo(.*) {
    try_files $1 $1/ /cargo/index.php?_REWRITE_COMMAND=$1&args;
}
    
por 06.12.2012 / 22:53
2

Eu encontrei outra coisa que funcionou para mim (como eu estou usando gunicorn, eu não posso escolher o que passar)

Você deve conseguir se safar com

location /cargo {
    rewrite ^/cargo(.*)$ $1 break;
    try_files $uri $uri/ /cargo/index.php?_REWRITE_COMMAND=$uri&args;
}
    
por 10.04.2014 / 21:09

Tags