nginx url reescrevendo. eu simplesmente não entendi

7

Ok, um URL de exemplo é

http://www.mysite.com/?p=account&view=settings

o p uri é uma constante. todos os URLs têm isso.

o view é um dos muitos uri opcionais.

Eu tentei entender a regravação de url e a regex, mas eu simplesmente não entendi. Eu preciso voltar a escrever código, mas infelizmente eu continuo voltando para nginx.conf para mais punição.

meu objetivo é reescrever os URLs da seguinte forma:

http://www.mysite.com/account/view/settings

Eu mostraria a você as coisas que tentei, mas apenas copiei e colei muitos exemplos anteriores, provando como sou patético ao compreender os conceitos de regex e reescrita de url.

Se alguém pudesse levar alguns minutos para explicar a parte do regex, ou me ligar a um bom tutorial para entender, eu apreciaria.

Não, eu não espero que você faça o trabalho para mim, mas humildemente peço uma pequena ajuda para entender os conceitos de reescrever e as variáveis para usar em conf nginx. Eu posso ver que um é chamado $uri , mas não tem idéia do que isso significa. Eu também preciso adicionar um regex para negar o acesso direto de scripts php no /socket e /private , mas permitir o acesso via ajax. Tenho certeza de que provavelmente posso aplicar qualquer conhecimento aprendido sobre o regex para essa tarefa.

os blocos de localização do meu conf nginx

location ~ \.(hh|php)$ {
    fastcgi_keep_conn on;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include        fastcgi_params;
}
location ~* .(png|gif|ico|css|js)$ {
    expires 365d;
}   
location ~ .(aspx|jsp|cgi)$ {
    return 410;
}
location /socket {
    return 405;
}
location /private {
    return 405;
}   
location / {
    # include /etc/nginx/naxsi.rules;
    index index.php;
    try_files    $uri $uri/ /index.php?q=$uri?;
    limit_req zone=one burst=5;
}

location /Denied {
    return 418;
}
error_page 500 /error.php?type=500;
error_page 501 /error.php?type=501;
error_page 502 /error.php?type=502;
error_page 503 /error.php?type=503;
error_page 400 /error.php?type=400;
error_page 401 /error.php?type=401;
error_page 403 /error.php?type=403;
error_page 404 /error.php?type=404;
error_page 405 /error.php?type=405;
error_page 406 /error.php?type=406;
error_page 413 /error.php?type=413;
error_page 414 /error.php?type=414;
error_page 418 /error.php?type=418;
    
por r3wt 27.05.2014 / 15:14

2 respostas

8

Acredito que este website pode ajudá-lo muito:

link

    
por 27.05.2014 / 15:48
1

Você precisa

location /yourlocations {
   if ($args ~* "p=[a-z]*&view=[a-z]*") {
        rewrite ^ http://yourwebsite.com/$arg_p/$arg_view? last;
        }

}

Além disso, se você quiser capturar o "view", você deve fazer o programa que view é um argumento como: yourwebsite.com/?p=test&second=test2&third=test3 para que você possa ter o seguinte:

location /yourlocations {
       if ($args ~* "p=[a-z]*&second=[a-z]*&third=[a-z]*") {
            rewrite ^ http://yourwebsite.com/$arg_p/$arg_second/$arg_third? last;
       }

}
    
por 27.05.2014 / 15:57