Я думаю, что я довольно близко. Я перенаправляю htaccess на веб-сайт (frontend/web) и путь /admin
(backend/web
). Сайт выглядит отлично, загрузка файлов CSS и т.д.
Если вы переходите к: http://localhost/yii2app/ - он загружает домашнюю страницу и не перенаправляет ее в адресную строку, но на странице отображается интерфейс/сеть во всех URL.
если вы перейдете к: http://localhost/yii2app/admin - он загружает страницу входа в систему, однако она сразу же перенаправляет на /backend/web/site/login в адресной строке (некрасиво).
Проблема: пути frontend/backend
отображаются в URL-адресах (адресная строка и ссылки на странице).
Что мне нужно: я хочу, чтобы весь сайт работал без отображения интерфейсных/бэкэнд-ссылок. Корень проекта должен вытащить (невидимо) из frontend/web
, не показывая его. Итак http://localhost/yii2app/ запускает весь мой интерфейс и http://localhost/yii2app/admin/ работает весь мой сервер.
Почему? Я чувствую, что эта настройка будет довольно прочной и элегантной, когда вы будете жить на сервере. Я хочу, чтобы иметь возможность подталкивать мою папку проекта в реальном времени на сайт, и она работает отлично, без необходимости иметь хаки для обработки локального сервера vs.
.htaccess
файл в /yii2app
dir:
Options -Indexes
RewriteEngine on
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/
RewriteCond %{REQUEST_URI} admin
RewriteRule .* backend/web/index.php [L]
RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css)/
RewriteCond %{REQUEST_URI} !admin
RewriteRule .* frontend/web/index.php [L]
</IfModule>
Теперь в интерфейсных и бэкэндовых веб-каталогах оба они имеют одинаковый .htaccess
:
RewriteEngine on
# if a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward the request to index.php
RewriteRule . index.php
Я не хочу видеть /frontend/web
или /backend/web
когда-либо:)
Я попытался сыграть с RewriteRule в корневом htaccess, чтобы добавить /admin
в URL-адрес, но он все время говорил мне, что /admin
не существует. Я ЗНАЮ, что этого не существует, и я не хочу, чтобы он существовал. Я хочу, чтобы это был относительный путь.. ie:/admin ==/backend/web.
Слово другое. Я все в корне проекта (http://localhost/yii2app/) загрузил frontend/web
, но не показывая его. Кроме того, http://localhost/yii2app/admin загрузить backend/web
и просто показать http://localhost/yii2app/admin. Очевидно, что к ним присоединятся их controller/action
. Таким образом, администратор может выглядеть как http://localhost/yii2app/admin/site/login
ПРИМЕЧАНИЕ. Я не играл ни с одним из файлов. Это расширенная настройка yii2, использующая композитор и следуя документам. Единственное, что я сыграл до сих пор, - это упомянутые файлы htaccess.
Спасибо!