Назад | Перейти на главную страницу

Преобразование .htaccess в nginx. Переписать не работает как надо

Я не могу преобразовать .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 просто добавьте отдельный locations для них:

location /public {
}
location = /index.php {
}

Ваш rewrite почти есть, но в отличие от Apache замена строка в Nginx всегда относительна корневого (не location родственник) и должен иметь ведущую /. Также я предлагаю убрать косую черту между php/? за ненадобностью.

location / {
    rewrite ^(.*)$ /index.php?params=$1;
}