В apache
У меня есть .htaccess
, который будет перезаписывать с http://server/api/any/path/i/want
до http://server/api/index.php
, если файл или папка не найдены.
Options -MultiViews
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $0#%{REQUEST_URI} ([^#]*)#(.*)\1$
RewriteRule ^.*$ %2index.php [L,NC,QSA]
</IfModule>
Я перехожу на docker
ивместо этого я буду использовать nginx
, и я хочу переписать rewrite
.
Важно отметить, что использование apache
и .htaccess
$_SERVER['REQUEST_URI']
означает /api/any/path/i/want
, а не переписаноurl (index.php....
).
Я не очень хорошо разбираюсь в nginx
, но из постов на SO я кое-что понял.
Соответствующий раздел site.conf
location / {
root /app/html;
try_files $uri $uri/ index.html /index.php?$args;
}
location ~ \.php$ {
try_files $uri @missing;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location @missing {
rewrite ^ $scheme://$host/api/index.php permanent;
}
Приведенный выше конфиг, к сожалению, будет перенаправлен только на index.php
, и это то, что мне удалось получить.
Как я могу сделать то же самое в nginx
?