Преобразование .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 внутри докера.

1
задан 25 May 2017 в 19:15
1 ответ

В Apache у вас есть RewriteCond ] для исключения ! / public и /index.php . В Nginx просто добавьте для них отдельное место s :

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

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

location / {
    rewrite ^(.*)$ /index.php?params=$1;
}
1
ответ дан 3 December 2019 в 23:30

Теги

Похожие вопросы