От автора: приветствую вас, друзья. Из этой статьи вы узнаете о нужном вопросе при работе с фреймворком Yii2: как в Yii2 убрать web из адреса. Вопрос действительно нужный, поскольку в URL сегмент web, указывающий на папку публичной части приложения, явно лишний и точно будет мешать построению ЧПУ в дальнейшем.
Итак, сразу после установки наш сайт доступен по адресу yii2/web, поскольку именно в каталоге web и находится публичная часть нашего приложения. Если же мы попытаемся обратиться к корню сайта, убрав сегмент ненужный сегмент из адреса, тогда увидим листинг корневой папки (если показ листинга не запрещен настройками сервера).
Такой вариант вряд ли кому-то понравится, хотелось бы, чтобы главная страница сайта была доступна при обращении к доменному имени, без добавления туда общедоступной директории. Благо, сделать это достаточно просто. Давайте узнаем, как из url убрать лишний сегмент.
Для решения задачи нам потребуется два файла .htaccess. Первый файл мы создадим в корне сайта и добавим в него следующие две строчки кода:
1 2 |
RewriteEngine on RewriteRule ^(.+)?$ /web/$1 |
Что делает этот код? Первая строка включает модуль mod_rewrite, с помощью которого можно управлять адресами. Ну а вторая строка полученный запрос (URL) перенаправляет в папку приложения.
В свою очередь в публичной директории создадим второй файл .htaccess и добавим в него вот эти четыре строки кода:
1 2 3 4 |
RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php |
Здесь мы устанавливаемый базовый URL и добавляем условия, которые говорят, что если запрос не идет к реально существующему файлу или каталогу (например, скрипты и стили), тогда его нужно перенаправить на файл index.php.
Давайте теперь попробуем обратиться к корню сайта, не указывая ненужную часть.
Отлично, все получилось. Также можно использовать возможности Open Server или вашего сервера, где можно указать, какую папку считать корневой при обращении к домену сайта. В данном случае мы можем указать корневой директорией публичный каталог.
Давайте очистим содержимое файлов .htaccess или просто удалим их. Теперь обратимся к меню Open Server Настройки — вкладка Домены. В открывшейся вкладке выберем способ управления доменами Ручное + Автопоиск и добавим в качестве имени домена — yii2, а в качестве папки домена — \yii2\web.
После сохранения и перезапуска сервера мы должны обращаться к главной странице сайта по доменному имени, без каталога web. Теперь вы знаете, как из URL убрать ненужное звено адреса. Более того, вы знаете, как из адреса убрать его несколькими способами. На этом сегодня все. Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков.