Конечно, вам нужно использовать модуль mod_rewrite в Apache, чтобы достичь желаемого поведения. Для этого нужно создать или отредактировать файл `.htaccess` в корневой директории вашего веб-сайта. Вот пример конфигурации, которая должна сработать для ваших требований:
```apache
RewriteEngine On
# Это для предотвращения циклического редиректа на index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Перенаправляем все запросы, не касающиеся реальных файлов или директорий, на index.php
RewriteRule . index.php [L]
```
Вот как работает данная конфигурация:
1. `RewriteEngine On` — включает модуль mod_rewrite.
2. `RewriteCond %{REQUEST_FILENAME} !-f` — проверяет, что запрашиваемый URL не соответствует реальному файлу.
3. `RewriteCond %{REQUEST_FILENAME} !-d` — проверяет, что запрашиваемый URL не соответствует реальной директории.
4. `RewriteRule . index.php [L]` — перенаправляет все остальные запросы на файл `index.php`. Флаг `[L]` означает, что это должно быть последнее правило перезаписи, которое обрабатывается, если текущий запрос совпадает с шаблоном.
Такая конфигурация гарантирует, что статические файлы (такие как изображения, стилевые файлы CSS, скрипты JavaScript и т.д.), будут напрямую отдаваться сервером, в то время как все другие запросы будут перенаправлены на `index.php`. Это типичная настройка для многих современных PHP-фреймворков, таких как Laravel или Symfony, а также CMS-систем, включая WordPress.
Обязательно проверьте, что модуль `mod_rewrite` включен в вашей конфигурации сервера Apache. Если возникнут проблемы с .htaccess (например, если файл игнорируется), убедитесь, что у вас есть права на его изменение и что директивы `AllowOverride` в конфигурации Apache разрешают использование .htaccess в директории сайта.