#php #.htaccess #model-view-controller
Вопрос:
Создание небольшого инструмента php MVC, но я столкнулся с парой проблем.
Первая проблема заключается в том, что ресурсы(активы) должны иметь имя общей папки внутри пути, чего я не хочу
//current
<link rel="stylesheet" href="public/assets/core.css">
//what I want
<link rel="stylesheet" href="assets/core.css">
Вторая проблема заключается в том, что маршрутизация не работает. Ну, все маршруты работают, но когда это просто косая черта, она перенаправляется обратно на локальный хост(в моем случае). Мне действительно нужно вернуться домой.
<ul>
<li>
<a href="/">Home</a>// will redirect to localhost
</li>
<li>
<a href="about">About</a>//this works /project-x/about
</li>
</ul>
структура проекта
project-x/
-.htaccess
-public/
--assets/
---style.css
--index.php
-app/
-src/
.htaccess
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]
Комментарии:
1. Вы должны установить корневой каталог документов веб — серверов в качестве общей папки. Если вам нужно добавить
/public
перед активами, это, скорее всего, означает, что вы установили его в папку выше.2. Я бы также рекомендовал вам использовать правильный маршрутизатор , который значительно упростит создание дополнительных пользовательских маршрутов. Это также делает ваш код более переносимым, так как вы пишете маршруты в своем коде, а не в htaccess (который предназначен только для веб-сервера Apache).