Для переработки правил редиректа из `.htaccess` в конфигурацию Nginx, необходимо учитывать различия между Apache и Nginx. Nginx не поддерживает условные конструкции типа `RewriteCond`, которые есть в Apache, и в Nginx правила записываются в конфигурационных блоках по-другому.
Вот как вы сможете настроить перенаправление аналогично вашим правилам из `.htaccess`:
```nginx
location / {
# Проверяем, что запрашиваемый файл не существует
try_files $uri $uri/ /index.php?$args;
}
```
### Объяснение:
1. `location /` — это блок, который обрабатывает все запросы к корню сайта.
2. `try_files $uri $uri/ /index.php?$args;` — эта директива проверяет:
- Если запрашиваемый файл (`$uri`) существует, он будет возвращен.
- Если не существует, проверяется наличие директории с таким именем (`$uri/`).
- Если ничего не найдено, запрос будет перенаправлен на `/index.php` с сохранением параметров запроса (`$args`).
Этот подход позволяет реализовать функционал модульной обработки запросов в Nginx, аналогичный правилам Apache в вашем примере. Убедитесь, что этот кусок кода помещается внутри соответствующего server блока в конфигурации Nginx.
### Пример полного конфигурационного блока:
```nginx
server {
listen 80;
server_name yourdomain.com; # замените на ваш домен
root /path/to/your/root; # замените на путь к вашему сайту
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000; # или unix:/var/run/php/php7.x-fpm.sock
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
```
Не забудьте после изменения конфигурации перезапустить Nginx, чтобы изменения вступили в силу:
```bash
sudo systemctl restart nginx
```
Теперь ваши запросы должны обрабатываться корректно аналогично тому, как это происходило в Apache.