# Настройка веб-сервера

Веб-сервер должен отправлять все HTTP-запросы на сценарий входа (фронт-контроллер) public/index.php.

Для проверки работоспособности или демонстрации приложения можно воспользоваться встроенным PHP-сервером. Для этого из корня приложения выполните следующую команду.

composer run serve

Для любых других задач используйте полнофункциональный веб-сервер.

# Рекомендуемая конфигурация Nginx

Должен быть установлен PHP-FPM и Nginx. Не забудьте заменить значения директив root, access_log, error_log на корректные пути, а также server_name на имя вашего хоста.

server {
    charset utf-8;
    listen 80; ## слушаем ipv4
    #listen [::]:80 default_server ipv6only=on; ## слушаем ipv6

    server_name example.com;
    root        /path/to/public;
    index       index.php;

    access_log  /path/to/example.access.log;
    error_log   /path/to/example.error.log;

    location / {
        # Перенаправить все запросы к несуществующим директориям и файлам на index.php
        try_files $uri $uri/ /index.php$is_args$args;
        # Обрезать конечный слэш
        rewrite ^/(.*)/$ /$1 permanent;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        # Использовать UNIX-сокет
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        # Использовать TCP-сокет
        #fastcgi_pass 127.0.0.1:9000;
    }

    location ~ /\. {
        deny all;
    }
}

# Рекомендуемая конфигурация Apache

Для Apache необходимо добавить следующий код в конфигурационный файл виртуального хоста и заменить path/to/public на корректный путь к public.

# Устанавить "public" корневой директорией
DocumentRoot "path/to/public"

<Directory "path/to/public">
    # Включить модуль "mod_rewrite" для поддержки URL-адресов
    RewriteEngine on

    # Если директория или файл существуют, обратиться к ним напрямую
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # Если нет - перенаправить запрос на index.php
    RewriteRule . index.php

    # ... другие настройки ...
</Directory>