REQUEST_URI htaccess nginx

REQUEST_URI htaccess nginx

htaccess から nginx への書き換え変換のヘルプ

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

--- 編集も使用

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でrewriteを使用するかどうかはまだわかりません

答え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でrewriteを使用するかどうかはまだわかりません

関連情報