@vankivol

Mod_rewrite и PHP. Как правильно сделать единую точку входа?

Столкнулся с проблемой при написании единой точки входа с помощью Mod_rewrite и PHP.

Код .htaccess

AddDefaultCharset UTF-8
Options -Indexes
Options +FollowSymlinks

RewriteEngine on
 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule  ^([a-zA-Z0-9_-]+)$ index.php?route=$1 [QSA,L]


В PHP получаем данные через
$route=$_GET["route"];

Проблема заключается в том, что если существует файл в директории с таким же названием, как и GET-Параметр полученный через .htaccess то GET-Параметр пустой.

Например:
Есть ссылка domain_name/contacts
При наличии файла contacts.php в директории GET-Параметр route переданный через .htaccess будет пустой.

Как быть в данной ситуации ? Может я что-то не так делаю или есть методы решения данной проблемы ?
Спасибо.
  • Вопрос задан
  • 396 просмотров
Пригласить эксперта
Ответы на вопрос 2
@McBernar
Смысл фронт-контроллера как раз в том, чтобы у вас не было файла contacts.php, а были классы, объекты и методы, которые загружаются в зависимости от роута.
Ответ написан
Комментировать
RewriteRule  ^([a-zA-Z0-9_-]+)$ index.php\?route=$1 [QSA,L]

А экранировать кто за вас будет ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы