
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. Вам вообще не нужно использовать директивы if
or .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