
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 if
directivas rewrite
en 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.