Доброго времени суток. Просмотрел много обучающих курсов и прочитал достаточно книг, но так и не понял концепцию mvc. Допустим у нас есть несколько файлов с разрешением .html или .php. Если файл существует браузер показывает его если нет выдает об ошибку об отсутствия файла. Проблема в следующем. Я видел 3 реализации и с которыми я несовсем согласен.
1) Сделать одну точку входа на сайт через mod_rewrite чтобы все запросы шли в index.php
.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php
В чём минус !-d структуру файлов можно просмотреть
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php
Теперь лучше но если обратится например к /app/controllers/Route.php
То будет ошибка так как файл подключается по другому пути от index.php
как должно быть
../views/error/404page.php
на самом деле
app/views/error/404page.php
2)Непонятно зачем создавать 2 директории
-app
models
views
controllers
-public
css
js
fonts
icons
images
index.php
Если перенаправить в public/index.php директория app будет закрыта но как тогда делать запросы ajax и получать ответы в виде json на клиент?
3) RewriteRule (.*) index.php?url=$1 [L,QSA]
Парсить из $GET['url'] для меня это минусы так как и по /news и по index.php?url=news сайт будет доступен.
Как реализовать mvc чтобы можно было избавится от ошибок + отправлять ajax запросы и получать ответы?