REQUEST_URI htaccess nginx

REQUEST_URI htaccess nginx

nginx 재작성 변환 도움말에 대한 htaccess

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

uri GET에 액세스할 때 원함http://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

--- 편집도 사용합니다

위치 /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;
}

하지만 nginx에서 다시 쓰기를 사용하는지 아직도 궁금합니다.

답변1

nginx는 Apache보다 더 간단하고 효과적인 방식으로 전면 컨트롤러 패턴을 구현합니다. 귀하의 경우 nginx 방식은 다음과 같습니다.

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

nginx 구성 상단에만 이 위치를 추가합니다. if또는 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;
    }

하지만 nginx에서 다시 쓰기를 사용하는지 아직도 궁금합니다.

관련 정보