Маршрутизация URL-адресов в PHP (MVC)

#php #.htaccess

Вопрос:

Я создаю пользовательский проект MVC, и у меня есть базовая папка /mvc , содержащая .htaccess routes.php файлы и размещенная в C:xampphtdocs корневой папке. Вот мои файлы:

C:xampphtdocsmvc.htaccess

 <IfModule mod_rewrite.c>

RewriteEngine on

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 ^((?!routes.php). )$ /mvc/routes.php [L]

</IfModule>
 

C:xampphtdocsmvcroutes.php

 <?php
# Routing logic goes here...
 

Проблема

Я хотел бы перейти routes.php в mvc/app папку, поэтому я изменил эту строку в .htaccess

 RewriteRule ^((?!routes.php). )$ /mvc/routes.php [L]
 

к этой строке:

 RewriteRule ^((?!routes.php). )$ /mvc/app/routes.php [L]
 

Но это, похоже, не работает! Я получаю ошибку 500. Что я здесь делаю? Я хотел бы перенаправить ВСЕ запросы (включая любые .php или другие запросы на файлы, за исключением изображений) на mvc/app/routes.php , который будет обрабатывать HTTP-запросы и направлять их соответствующим контроллерам.

Ответ №1:

Попробуйте с:

 <IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{REQUEST_URI} !.(png|jpg|css|gif|js)$ [NC]
RewriteRule ^((?!app/routes.php). )$ /mvc/app/routes.php [L]
</IfModule>
 

Комментарии:

1. Обновление: все, что мне нужно было сделать, это изменить ^((?!mvc/app/routes.php). )$ ^((?!app/routes.php). )$ . mvc/ здесь это не нужно, потому .htaccess что уже находится внутри mvc/ папки! Спасибо!