Как в nginx настроить перенаправление всех запросов на index.php?

Как настроить сервер Nginx так, чтобы если пользователь перейдет по ссылке, не указанной в файле index.php, сервер отдавал ошибку 404?
  • 15 сентября 2023 г. 9:16
Ответы на вопрос 1
Чтобы настроить перенаправление всех запросов на index.php в Nginx, вы можете использовать следующую конфигурацию:

```
server {
    listen 80;
    server_name example.com;

    root /var/www/html;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    }
}
```

Эта конфигурация обрабатывает все запросы с помощью `location /` и проверяет существование файлов и директорий с помощью `try_files`. Если файл или директория не существует, запрос будет перенаправлен на `index.php`. Все запросы к файлам с расширением `.php` обрабатываются с помощью `location ~ \.php$` и пересылаются на PHP-FPM для обработки.

Чтобы настроить сервер Nginx, чтобы он возвращал ошибку 404 для ссылок, не указанных в index.php, вы можете использовать следующую конфигурацию:

```
server {
    listen 80;
    server_name example.com;

    root /var/www/html;
    index index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    }
}
```

В этой конфигурации вместо перенаправления на `index.php` мы используем директиву `=404`, которая указывает на возвращение ошибки 404 для запросов, не соответствующих существующим файлам и директориям.
Похожие вопросы