
ajuda de conversão de reescrita de htaccess para nginx
RewriteEngine On
RewriteCond %{REQUEST_URI} apiv01
RewriteRule ^(.*)$ api.php?params=$1 [NC]
Quero quando acessar uri GEThttp://localhost/hospital_project/apiv01/listHospital/3211pode exibir
{"header":{"code":"401","message":"wrong token"}}
Eu usei a configuração da anilcetina assim:
location /hospital_project {
if ($uri ~ "apiv01"){
set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
rewrite ^/(.*)$ /hospital_project/api.php?params=$1;
}
}
Também usei a configuração dehttps://winginx.com/en/htaccessassim:
location /hospital_project {
rewrite apiv01 /hospital_project/api.php?params=$1;
}
Mas quando eu acessohttp://localhost/hospital_project/apiv01/listHospital/3211a saída é igual ahttp://localhost/hospital_project/apiv01(sem efeito)
Normal se eu usarhttp://localhost/hospital_project/api.php?params=apiv01/listHospital/3211
--- Editar também eu uso
localização /hospital_project/apiv01 { try_files $uri $uri/ /hospital_project/api.php?params=$request_uri; } mas também sem efeito
isso resolve usando proxy reverso para apache2 assim
location /hospital_project {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8888;
}
mas ainda estou curioso para saber se estou usando rewrite no nginx
Responder1
O nginx implementa padrões de controlador frontal de uma forma mais simples e eficaz que o Apache. A maneira nginx é assim no seu caso:
location ~ ^/(hospital_project/apiv01.+)$ {
try_files $uri $uri/ /hospital_project/api.php?params=$1;
}
Você adiciona esse local apenas na parte superior da configuração do nginx. Você não precisa usar if
nenhuma rewrite
diretiva.
Responder2
desculpe, quero dizer que eu uso;
location /hospital_project/ {
rewrite apiv01 /hospital_project/api.php?params=$1;
}
mas nenhum efeito
também eu uso
location /hospital_project/apiv01 {
try_files $uri $uri/ /hospital_project/api.php?params=$request_uri;
}
mas também nenhum efeito
isso resolve usando proxy reverso para apache2 assim
location /hospital_project {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8888;
}
mas ainda estou curioso para saber se estou usando rewrite no nginx