[РЕШЕНО] Убрать /frontend/web/ из строки адреса
-
- Сообщения: 271
- Зарегистрирован: 2012.11.30, 07:33
[РЕШЕНО] Убрать /frontend/web/ из строки адреса
Не получаеться убрать это на локальной машине. Использую OpenServer. Раньше вручную стояли пути в /frontend/web в конфиге openserver'a и все было норм. На хостинге указывал пути через htaccess и все было нормально, но я решил сделать на локальной машине как и на хостинге, через htaccess, сделал все 1 в 1 и структуру каталогов тоже и вылезли эти пути. Настроенно все как в посте nepster'a
Последний раз редактировалось Vespertilio 2014.10.20, 20:29, всего редактировалось 1 раз.
Re: Убрать /frontend/web/ из строки адреса
Первое что стоит спросить, у вас точно apache запущен, а не nginx?
-
- Сообщения: 271
- Зарегистрирован: 2012.11.30, 07:33
Re: Убрать /frontend/web/ из строки адреса
Точно =) чистый апачShNURoK писал(а):Первое что стоит спросить, у вас точно apache запущен, а не nginx?
Ну .htaccess он подхватывает, при заходе просто по локальному адресу сайта (в моем случае yii2.dev) он открывает его без проблем, а уже при переходе по ссылкам к /controller/action приписываеться полный путь : /frontend/web/controller/action
-
- Сообщения: 271
- Зарегистрирован: 2012.11.30, 07:33
Re: Убрать /frontend/web/ из строки адреса
Мне вот и не понятно, почему rewrite не происходит если он прописан в .htaccess, ведь он работает. Как-то он частично отрабатывает.
Re: Убрать /frontend/web/ из строки адреса
.htaccess разместить в корне сайта
.htaccess разместить в /frontend/web/ и /backend/web/.htaccess
/frontend/config/main.php
/backend/config/main.php
Код: Выделить всё
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
</IfModule>
<IfModule mod_rewrite.c>
# deal with admin first
RewriteCond %{REQUEST_URI} ^/(admin)
RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L]
RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L]
RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/
RewriteCond %{REQUEST_URI} ^/(admin)
RewriteRule ^.*$ backend/web/index.php [L]
RewriteCond %{REQUEST_URI} ^/(assets|css|js|images)
RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]
RewriteRule ^js/(.*)$ frontend/web/js/$1 [L]
RewriteRule ^images/(.*)$ frontend/web/images/$1 [L]
RewriteRule ^(.*)$ frontend/web/$1 [L]
RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css|js)/
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ frontend/web/index.php
</IfModule>
.htaccess разместить в /frontend/web/ и /backend/web/.htaccess
Код: Выделить всё
# Если это папка или файл, открываем его
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# В противном случае перенаправляем на index.php
RewriteRule . index.php
/frontend/config/main.php
Код: Выделить всё
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
//'suffix' => '.html',
'rules' => [
'' => 'site/index',
'<action>'=>'site/<action>',
],
],
'assetManager' => [
'basePath' => '@webroot/assets',
'baseUrl' => '@web/assets'
],
'request' => [
'baseUrl' => ''
]
/backend/config/main.php
Код: Выделить всё
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
//'suffix' => '.html',
'rules' => [
'' => 'site/index',
'<action>'=>'site/<action>',
],
],
'assetManager' => [
'basePath' => '@webroot/assets',
'baseUrl' => '@web/assets'
],
'request' => [
'baseUrl' => '/admin'
]
Re: Убрать /frontend/web/ из строки адреса
так же опенсервер стоит.
Re: Убрать /frontend/web/ из строки адреса
я сделал так, пкм-дополнительно-конфигурация-Apache 2.*.* откроется 2 файла, редактируем только Apache-2.*.*_vhost.conf, я добавил такие строки:
папка www - это папка web
Код: Выделить всё
#---------------------------------------------#
# Начало блока конфигурации HTTP хоста #
#---------------------------------------------#
<VirtualHost *:80>
ServerName yii2.loc
DocumentRoot C:\OpenServer\domains\yii2.loc\www
<Directory C:\OpenServer\domains\yii2.loc\www>
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
#---------------------------------------------#
# Конец блока конфигурации HTTP хоста #
#---------------------------------------------#
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Убрать /frontend/web/ из строки адреса
В последних апачах по умолчанию AllowOverride отключен.
Нравится Yii? Давайте сделаем его лучше!.
-
- Сообщения: 271
- Зарегистрирован: 2012.11.30, 07:33
Re: Убрать /frontend/web/ из строки адреса
Да, я все точно так же сделал. Не понимаю в чем же проблема.nepster писал(а):.htaccess разместить в корне сайта
AllowOverride All есть в конфиге апача опен сервера. Там стоит маска для сайтов:
Код: Выделить всё
<Directory "%ssitedir%/*">
AllowOverride All
Options -MultiViews +Indexes +FollowSymLinks +IncludesNoExec +Includes +ExecCGI
<LimitExcept GET POST HEAD>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
На хостинге полностью аналогичный конфиг и все отлично работает
Re: Убрать /frontend/web/ из строки адреса
Я просто переключил локально с модуля apache+nginx, на чисто Apache. Все проблемы исчесли и все Rewrite работают.
-
- Сообщения: 271
- Зарегистрирован: 2012.11.30, 07:33
Re: Убрать /frontend/web/ из строки адреса
А у меня и стоит чистый апач 2,2,27, без "+nginx". Так и не победил эту проблему. И на форуме опен сервера молчат. Вернул пути обратно через настройки доменов. жаль.astappev писал(а):Я просто переключил локально с модуля apache+nginx, на чисто Apache. Все проблемы исчесли и все Rewrite работают.
- MetaDriver
- Сообщения: 43
- Зарегистрирован: 2014.04.21, 20:53
- Откуда: Казань
Re: Убрать /frontend/web/ из строки адреса
Гляньте здесь: viewtopic.php?f=30&t=19729#p115806Vespertilio писал(а):А у меня и стоит чистый апач 2,2,27, без "+nginx". Так и не победил эту проблему. И на форуме опен сервера молчат. Вернул пути обратно через настройки доменов. жаль.astappev писал(а):Я просто переключил локально с модуля apache+nginx, на чисто Apache. Все проблемы исчесли и все Rewrite работают.
Re: Убрать /frontend/web/ из строки адреса
For Basic Applications:
Источник: http://www.yiiframework.com/forum/index ... ntry257425
For Advanced Applications:Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
# if request dosn't start with web add it
RewriteCond %{REQUEST_URI} !^/(web)
RewriteRule (.*) /web/$1
# if file or directory dosn't exists go to /web/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /web/index.php
Через .htaccess в корневой папкеOptions +FollowSymLinks
IndexIgnore */*
RewriteEngine on
# if request begins with /admin remove admin and ad /backend/web/
RewriteCond %{REQUEST_URI} ^/admin
RewriteRule ^admin\/?(.*) /backend/web/$1
# other requests add /frontend/web/$1
RewriteCond %{REQUEST_URI} !^/(frontend/web|backend/web|admin)
RewriteRule (.*) /frontend/web/$1
# if frontend request
RewriteCond %{REQUEST_URI} ^/frontend/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /frontend/web/index.php
# if backend request
RewriteCond %{REQUEST_URI} ^/backend/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /backend/web/index.php
Источник: http://www.yiiframework.com/forum/index ... ntry257425
-
- Сообщения: 271
- Зарегистрирован: 2012.11.30, 07:33
Re: Убрать /frontend/web/ из строки адреса
Прошу прощения, я уже давно победил эту проблему, htaccess'ы отлично работают, не помню уже в чем дело было.
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
Кто-нибудь может ответить мне как при этом апач должен быть настроен?
Если ставить документ рут на фронтенд/веб, то, очевидно, хтаксесс в корне приложения (как это указано в ответах по ссылкам выше) не будет обрабатываться, а ставить документ рут на корень приложения небезопасно согласно документации.
Ничерта не понимаю...
Если ставить документ рут на фронтенд/веб, то, очевидно, хтаксесс в корне приложения (как это указано в ответах по ссылкам выше) не будет обрабатываться, а ставить документ рут на корень приложения небезопасно согласно документации.
Ничерта не понимаю...
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
лучше без htaccess и root в frontend/web, а для backend/web отдельный хост
-
- Сообщения: 271
- Зарегистрирован: 2012.11.30, 07:33
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
Редко какие шаред хостинги дают менять root.anton44eg писал(а):лучше без htaccess и root в frontend/web, а для backend/web отдельный хост
Кстати, при обновлении до релиза почему-то опять стали вываливаться в строке пути с прежними htaccess'ми, что там могло поменяться?
-
- Сообщения: 271
- Зарегистрирован: 2012.11.30, 07:33
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
Все нормально, забыл прописать
'request' => [
'baseUrl' => ''
]
'request' => [
'baseUrl' => ''
]
-
- Сообщения: 5
- Зарегистрирован: 2014.10.29, 21:29
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
Только начал изучать Yii2, пересмотрел кучу подобных постов, но пока не нашел решения. Все делаю как описано на первой странице (т.е совет от nepster-a идеинтичный этому - viewtopic.php?f=19&t=15744&start=20#p102679), только на моём локальном сервере (Apache), хочу все сделать не в сайт руте а http://localhost/yii/ все работает за исключением стилей бутстрапа и прочих CSS... Учитывая рекомендации на первой странице, что еще нужно изменить в .htaccess или конфигах если нужно http://localhost/yii ? Огромное спасибо!
-
- Сообщения: 5
- Зарегистрирован: 2014.10.29, 21:29
Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса
Проблема решилась вот таким .htaccess:
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
# if request begins with /admin remove admin and ad /backend/web/
RewriteCond %{REQUEST_URI} ^/admin
RewriteRule ^admin\/?(.*) /backend/web/$1
# other requests add /frontend/web/$1
RewriteCond %{REQUEST_URI} !^/(frontend/web|backend/web|admin)
RewriteRule (.*) /frontend/web/$1
# if frontend request
RewriteCond %{REQUEST_URI} ^/frontend/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /frontend/web/index.php
# if backend request
RewriteCond %{REQUEST_URI} ^/backend/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /backend/web/index.php
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
# if request begins with /admin remove admin and ad /backend/web/
RewriteCond %{REQUEST_URI} ^/admin
RewriteRule ^admin\/?(.*) /backend/web/$1
# other requests add /frontend/web/$1
RewriteCond %{REQUEST_URI} !^/(frontend/web|backend/web|admin)
RewriteRule (.*) /frontend/web/$1
# if frontend request
RewriteCond %{REQUEST_URI} ^/frontend/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /frontend/web/index.php
# if backend request
RewriteCond %{REQUEST_URI} ^/backend/web
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /backend/web/index.php