
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에서 다시 쓰기를 사용하는지 아직도 궁금합니다.