@tryvols
Front-End разработчик

Почему urlManager не находит страницы?

Доброе утро. Уже часов 6 мучаю проблему. Что не пробовал - не помогает. Суть: по инструкции yii2 точь в точь переписал simple yii application, но urlManager упорно не находит мой контроллер пока включены красивые ссылки. В обычном режиме все работает замечательно. Вот скрин проблемы:
5a0d3e2a552a7373981130.png
----------------------------------------------------------------------------------------------------------------------------------
Model:
namespace app\models;

use yii\db\ActiveRecord;

class User extends ActiveRecord
{
    public static function tableName () {
        return 'User';
    }
}


Controller:
namespace app\controllers;

use yii\rest\ActiveController;

class UserController extends ActiveController
{
	public $modelClass = 'app\models\User';
}


Configs:
'components' => [
        'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            'parsers' => [
                'application/json' => 'yii\web\JsonParser',
            ],
            'cookieValidationKey' => 'rAdPF-K0vJgsWJQWlN8Ygg9zg6aXtxsV',
        ],
        'cache' => [
            'class' => 'yii\caching\FileCache',
        ],
        'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
        ],
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => true,
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'db' => $db,
        'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => true,
            'showScriptName' => false,
            'rules' => [
                ['class' => 'yii\rest\UrlRule', 'controller' => 'user'],
            ],
        ],
    ]


.htaccess:
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
 
# Если запрос не начинается с web, добавляем его
RewriteCond %{REQUEST_URI} !^/(web)
RewriteRule (.*) /web/$1
 
# Если файл или каталог не существует, идём к /web/index.php 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /web/index.php
  • Вопрос задан
  • 383 просмотра
Решения вопроса 1
Decadal
@Decadal
вы точно настроили rewrite rules?
в папке web должен быть файл .htaccess с таким содержимым:

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


обратите внимание что в /etc/apache2/apache2.conf должны быть разрешены Override для той директории, где находится ваш проект (или где находятся все проекты):

<Directory /var/www/>
	Options Indexes FollowSymLinks
	AllowOverride All
	Require all granted
</Directory>


UPD: как заметили в комментарии, mod_rewrite тоже должен быть включен:
sudo a2enmod rewrite
sudo service apache2 restart
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
slo_nik
@slo_nik Куратор тега Yii
Доброе утро.
Установите 'enableStrictParsing' =>false, должно заработать
Ответ написан
Комментировать
Maksclub
@Maksclub
maksfedorov.ru

# Если запрос не начинается с web, добавляем его
RewriteCond %{REQUEST_URI} !^/(web)

ну сколько уже можно эту тему молоть,
сервер должен смотреть не в корень, а в папку web (Yii2 или Symfony) или public(Laravel)

по инструкции yii2 точь в точь переписал simple yii application

а настройка сервера там не написана, вот:
официальный мануал по настройке Апача
и
официальный мануал по настройке ЧПУ

и еще -- настройте вы уже Nginx, какой htaccess в 2017 для новых проектов?!

UPD:
на скрине у вас /users
контроллер называется User
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы