Я не могу преобразовать .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 просто добавьте отдельный location
s для них:
location /public {
}
location = /index.php {
}
Ваш rewrite
почти есть, но в отличие от Apache замена строка в Nginx всегда относительна корневого (не location
родственник) и должен иметь ведущую /
. Также я предлагаю убрать косую черту между php/?
за ненадобностью.
location / {
rewrite ^(.*)$ /index.php?params=$1;
}