REQUEST_URI htaccess nginx

REQUEST_URI htaccess nginx

Ayuda para la conversión de reescritura de htaccess a nginx

RewriteEngine On
RewriteCond %{REQUEST_URI} apiv01
RewriteRule ^(.*)$ api.php?params=$1 [NC]

Quiero cuando acceda a uri GEThttp://localhost/hospital_project/apiv01/listHospital/3211puede mostrar

    {"header":{"code":"401","message":"wrong token"}}

He usado la configuración de anilcetina así:

location /hospital_project {
if ($uri ~ "apiv01"){
        set $rule_0 1$rule_0;
        }
if ($rule_0 = "1"){
        rewrite ^/(.*)$ /hospital_project/api.php?params=$1;
        }

}

También he usado la configuración dehttps://winginx.com/en/htaccesscomo esto:

location /hospital_project {
  rewrite apiv01 /hospital_project/api.php?params=$1;
}

Pero cuando accedohttp://localhost/hospital_project/apiv01/listHospital/3211la salida es igual ahttp://localhost/hospital_project/apiv01(sin efecto)

Normal si lo usohttp://localhost/hospital_project/api.php?params=apiv01/listHospital/3211

--- Editar también lo uso

ubicación /hospital_project/apiv01 { try_files $uri $uri/ /hospital_project/api.php?params=$request_uri; } pero tampoco ningún efecto

esto se resuelve usando proxy inverso para apache2 así

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;
}

pero todavía tengo curiosidad por saber si uso la reescritura en nginx.

Respuesta1

nginx implementa patrones de controlador frontal de una manera más simple y efectiva que Apache. La forma nginx se ve así en su caso:

location ~ ^/(hospital_project/apiv01.+)$ {
    try_files $uri $uri/ /hospital_project/api.php?params=$1;
}

Solo agrega esta ubicación en la parte superior de la configuración de nginx. No es necesario utilizar ifdirectivas rewriteen absoluto.

Respuesta2

lo siento, quiero decir que uso;

location /hospital_project/ {
  rewrite apiv01 /hospital_project/api.php?params=$1;
}

pero ningún efecto

también lo uso

location /hospital_project/apiv01 {
    try_files $uri $uri/ /hospital_project/api.php?params=$request_uri;
}

pero tampoco ningún efecto

esto se resuelve usando proxy inverso para apache2 así

    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;
    }

pero todavía tengo curiosidad por saber si uso la reescritura en nginx.

información relacionada