Yii2 як прибрати web з адреси URL

17

Від автора: вітаю вас, друзі. З цієї статті ви дізнаєтеся про потрібному питанні при роботі з фреймворком Yii2: як в Yii2 прибрати web адреси. Питання дійсно потрібний, оскільки в URL сегмент web, вказує на папку публічної частини програми, явно зайвий і точно буде заважати побудови ЧПУ надалі.

Отже, відразу після установки наш сайт доступний за адресою yii2/web, оскільки саме в каталозі web і знаходиться публічна частина нашої програми. Якщо ж ми спробуємо звернутися до кореня сайту, прибравши сегмент непотрібний сегмент адреси, тоді побачимо лістинг кореневої папки (якщо показ лістингу не заборонений налаштуваннями сервера).

Yii2 як прибрати web з адреси URL

Такий варіант навряд чи комусь сподобається, хотілося б, щоб головна сторінка сайту була доступна при зверненні до доменного імені, без додавання туди загальнодоступній директорії. Благо, зробити це досить просто. Давайте дізнаємося, як з url прибрати зайвий сегмент.

Для розв’язання задачі нам потрібно два файлу .htaccess. Перший файл ми створимо в корені сайту і додамо в нього наступні два рядки коду:

RewriteEngine on
RewriteRule ^(.+)?$ /web/$1

Що робить цей код? Перший рядок містить модуль mod_rewrite, за допомогою якого можна управляти адресами. Ну а друга рядок отриманий запит (URL) перенаправляє в папку програми.

У свою чергу в публічній директорії створимо другий файл .htaccess і додамо в нього ось ці чотири рядки коду:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

Тут ми встановлений базовий URL і додаємо умови, які кажуть, що якщо запит не йде до реально існуючого файлу або каталогу (наприклад, скрипти і стилі), тоді його потрібно перенаправити на файл index.php.

Давайте тепер спробуємо звернутися до кореня сайту, не вказуючи непотрібну частину.

Yii2 як прибрати web з адреси URL

Відмінно, все вийшло. Також можна використовувати можливості Open Server або вашого сервера, де можна вказати, яку папку вважати кореневої при зверненні до домену сайту. В даному випадку ми можемо вказати кореневої директорією публічний каталог.

Давайте очистимо вміст файлів .htaccess або просто видалити їх. Тепер звернемося до меню Open Server Налаштування — вкладка Домени. У новоствореній вкладці виберемо спосіб управління доменами Ручне + Автопошук і додамо в якості імені домену — yii2, а в якості папки домену \yii2\web.

Yii2 як прибрати web з адреси URL

Після збереження та перезапуску сервера ми повинні звертатися до головній сторінці сайту по доменному імені, без каталогу web. Тепер ви знаєте, як з URL прибрати непотрібну ланку адреси. Більше того, ви знаєте, як з адреси прибрати його кількома способами. На цьому сьогодні все. Більше про фреймворку ви можете дізнатися з наших безкоштовних або платних уроків.