Недопустимый общий доступ к папке MVC

Недавно я переместил свой файл index.php (файл, который обрабатывает маршрутизацию) и ресурсы css / js / font в public/ папку. Я хочу, чтобы объекты в этой public/ папке были доступны для целей безопасности. Я столкнулся с этой проблемой, когда понял, что могу посетить mysite.com/composer.lock и просмотреть файл блокировки композитора с помощью моей старой настройки .htaccess и папки.

Вот что я хочу

Если я mysite.com/car/create , я хочу, чтобы он фактически указывал на mysite.com/public/index.php?path=car/create

Если я mysite.com/css/style.css на такой актив, как mysite.com/css/style.css , я хочу, чтобы он действительно указывал на mysite.com/public/css/style.css

Вот моя структура папок

Структура папок MVC

Вот мой .htaccess который не работает вообще

 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ public/index.php?path=$1 [L,QSA] </IfModule> 

Я не знаю, как это исправить. Он просто генерирует пустые страницы, и я все же могу напрямую посещать файлы в корневом каталоге и т. Д. Любая помощь приветствуется.

Ваши существующие директивы специально избегают переписывать запросы на существующие файлы, поэтому он все равно позволит вам посещать файлы в корневом каталоге. Он также перезапишет статические ресурсы для public/index.php?path= , которые предположительно потерпят неудачу.

Вместо этого попробуйте следующее:

 RewriteEngine On # Stop processing if already in the /public directory RewriteRule ^public/ - [L] # Static resources if they exist RewriteCond %{DOCUMENT_ROOT}/public/$1 -f RewriteRule (.+) public/$1 [L] # Route all other requests RewriteRule (.*) public/index.php?path=$1 [L,QSA]