ЧПУ ссылки для сайта на Yii2

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

После установки базовой версии Yii2, ссылки на сайте стали отображаться в таком виде

http://my-site.org/web/index.php?r=site%2Findex

тоесть корень сайта идет с «web» и видны GET параметры в урле

Чтоб убрать из урла «web» достаточно перенести файлы из этой папки в корень сайта, ну и остальные файлы и папки перенести выше корня сайта

Для того чтобы убрать параметры GET с урла, надо сделать правки в файле config/web.php

<?php

$params = require __DIR__ . '/params.php';
$db = require __DIR__ . '/db.php';

$config = [
  'id' => 'basic',
  'basePath' => dirname(__DIR__),
  'bootstrap' => ['log'],
  . . .
  'components' => [
    'urlManager' => [
      'enablePrettyUrl' => true,
      'showScriptName' => false,
    ],
  . . .
Тоесть добавляем параметр «urlManager» в раздел «components«
И в файле .htaccess сделать следующие правки


Options +FollowSymLinks
IndexIgnore */*

RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

После этих правок ссылки сайта примут следующий вид

http://my-site.org/site/index

Теперь надо убрать из урла site, тоесть название контроллера

Для этого опять внесем правки в конфиг config/web.php


<?php

$params = require __DIR__ . '/params.php';
$db = require __DIR__ . '/db.php';

$config = [
  'id' => 'basic',
  'basePath' => dirname(__DIR__),
  'bootstrap' => ['log'],
  . . .
  'components' => [
    'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
      'about' => 'site/about',
      'contact' => 'site/contact',
      'login' => 'site/login',
    ]
],
. . .

Как видно из примера, для изменения урла есть раздел rules, собственно в котором и указываем правила отображения.

А теперь сокращенная версия правил для урлов одного контроллера


'rules' => [
'<action:(about|contact|login)>' => 'site/<action>',
],

Или еще одна сокращенная запись, но тут уже не надо перечислять урлы


'rules' => [
'<action:[-a-zA-Z0-9_]+>' => 'site/<action>',
],

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *