Я не могу преобразовать .htaccess в конфигурацию nginx. Я пытался использовать онлайн-инструменты конвертации. .htaccess для преобразования выглядит следующим образом:
RewriteEngine on
RewriteCond %{REQUEST_URI} !/public
RewriteCond %{REQUEST_URI} !/index.php
RewriteRule ^(.*)$ index.php/?params=$1 [NC]
Я пытался использовать следующую конфигурацию nginx.:
location / {
rewrite ^(.*)$ index.php/?params=$1;
}
Это просто не работает должным образом. Также он дает доступ к другим файлам в этом каталоге. Я хочу, чтобы был доступен только index.php. И даже это должно работать с правилами .htaccess.
Установка apache / httpd невозможна на производственном сервере. И я не хочу тратить ресурсы на запуск apache внутри докера.
В Apache у вас есть RewriteCond
] для исключения ! / public
и /index.php
. В Nginx просто добавьте для них отдельное место
s :
location /public {
}
location = /index.php {
}
Ваш rewrite
почти готов, но в отличие от Apache, строка замены в Nginx всегда относится к корневому каталогу (не относительному location
) и должен иметь ведущие /
. Кроме того, я предлагаю убрать косую черту между php /?
как ненужную.
location / {
rewrite ^(.*)$ /index.php?params=$1;
}