На хостинге установлен yii2-basic
, установлен не в корень, а в htdocs/basic
.
Хочу http://домен/basic/web/about
заменить на http://домен/basic/about
.
На данный момент последний адрес перенаправляет на главную страницу.
В basic
лежит следующий .htaccess
:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} ^/.*
RewriteRule ^(.*)$ web/$1 [L]
RewriteCond %{REQUEST_URI} !^/web/
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ web/index.php
</IfModule>
В basic/web
тоже лежит .htaccess
:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
В config/web.php
:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'' => 'site/index',
'<action>'=>'site/<action>',
],
],
В 'request'
добавление 'baseUrl' => ''
даёт 404.
Сам не раз сталкивался с клиентами, у которых был обычный хостинг, где не было возможности прописать корневую директорию.
Вот как я решал данную проблему:
1) В корне проекта создаем .htaccess с содержимым:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} ^/.*
RewriteRule ^(.*)$ basic/web/$1 [L]
RewriteCond %{REQUEST_URI} !^/basic/web/
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ basic/web/index.php
</IfModule>
2) В папке web создаем .htaccess с содержимым:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
3) Далее открываем файл config/web.php и делаем следующее:
Находим строчку
'request' => [
'cookieValidationKey' => .......,
],
И добавляем в массив строчку 'baseUrl' => ''
'request' => [
'cookieValidationKey' => .......,
'baseUrl' => '',
],
4) Заранее забегаю вперед и пишу, как убрать ещё и index.php
Находим строчку в файле config/web.php
'urlManager' => [
........ //остальная часть кода
],
И добавляем в массив строчку 'showScriptName' => false
'urlManager' => [
'showScriptName' => false,
........ //остальная часть кода
],
Данная инструкция уместна для структуры папок, указанной Вами. Обычно проект заливают в корень сайта. В таком случае убираем в первом пункте basic и наслаждаемся жизнью :)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Решил поэкспериментировать с Google Calendar и попробовать реализовать добавление события в календарь на определённый день и времяОднако спустя...