REQUEST_URI htaccess nginx

REQUEST_URI htaccess nginx

htaccess в nginx переписать преобразование помощь

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

Я хочу, когда доступ uri GEThttp://localhost/hospital_project/apiv01/listHospital/3211может отображать

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

Я использовал следующую конфигурацию анилцетина:

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

}

Также я использовал конфигурациюhttps://winginx.com/en/htaccessтак:

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

Но когда я получаю доступhttp://localhost/hospital_project/apiv01/listHospital/3211выход равенhttp://localhost/hospital_project/apiv01(нет эффекта)

Нормально, если я используюhttp://localhost/hospital_project/api.php?params=apiv01/listHospital/3211

--- Редактировать также я использую

location /hospital_project/apiv01 { try_files $uri $uri/ /hospital_project/api.php?params=$request_uri; } но также нет эффекта

это решается с помощью обратного прокси-сервера к apache2, как это

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

но мне все еще интересно, если использовать rewrite в nginx

решение1

nginx реализует шаблоны front-controller более простым и эффективным способом, чем Apache. Способ nginx в вашем случае выглядит так:

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

Вы просто добавляете это местоположение в верхнюю часть конфигурации nginx. Вам вообще не нужно использовать директивы ifor .rewrite

решение2

извините, я имею в виду, что использую;

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

но никакого эффекта

также я использую

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

но также нет эффекта

это решается с помощью обратного прокси-сервера к apache2, как это

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

но мне все еще интересно, если использовать rewrite в nginx

Связанный контент