Файл htaccess (также известный как файл распределенной конфигурации) позволяет настраивать веб-сервер на основе каждого каталога. Одна из удобных функций файла htaccess заключается в том, что мы можем вызывать модули на стороне сервера. Мы можем использовать модуль mod_rewrite для перенаправления или перезаписи определенных URL-запросов.
Итак, чтобы настроить нашу CMS, нам нужно переписать все запросы к любому файлу на сервере на '/index.php'. Первая попытка сделать это может выглядеть следующим образом:
1 2 3 4 | Options +FollowSymLinks RewriteEngine On # Redirect requests to index.php RewriteRule .* /index.php |
Все выглядит нормально, пока вы не подумаете о том, что произойдет на самом деле. Мы перенаправляем ВСЕ запросы на 'index.php' - включая запросы на 'index.php'... В бизнесе это называют бесконечным зацикливанием. Следующей (и гораздо более удачной) попыткой будет:
1 2 3 4 5 | Options +FollowSymLinks RewriteEngine On # Redirect requests to index.php RewriteCond %{REQUEST_URI} !=/index.php RewriteRule .* /index.php |
Это будет работать хорошо, если только у вас нет таких вещей, как изображения, таблицы стилей, JavaScript и вообще любых других файлов, которые мы привыкли ожидать от богатого интернет-опыта. Мы можем исправить это, исключив запросы к этим типам файлов из процесса перезаписи:
1 2 3 4 5 6 7 8 9 10 | Options +FollowSymLinks RewriteEngine On # Redirect requests to index.php RewriteCond %{REQUEST_URI} !=/index.php RewriteCond %{REQUEST_URI} !.*\.png$ [NC] RewriteCond %{REQUEST_URI} !.*\.jpg$ [NC] RewriteCond %{REQUEST_URI} !.*\.css$ [NC] RewriteCond %{REQUEST_URI} !.*\.gif$ [NC] RewriteCond %{REQUEST_URI} !.*\.js$ [NC] RewriteRule .* /index.php |
И вот, пожалуйста! Полезный файл .htaccess используется для перенаправления всех запросов на файл index.php!