Перенос сайта с Windows на Linux: маршрутизация

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Vagolo
Сообщения: 22
Зарегистрирован: 2014.01.18, 17:22

Перенос сайта с Windows на Linux: маршрутизация

Сообщение Vagolo »

Привет, Великий Олл!

При переносе рабочего сайта с Windows (OpenServer) на Debian нежданно возникла проблема маршрутизацией:
1. При добавлении в config/main.php в 'components'/'urlManager' строки 'showScriptName'=>true выводится ошибка The requested URL /user/login was not found on this server. (url <server>/user/login)
Лог Апача говорит: File does not exist: /var/www/user
Если заремить 'showScriptName'=>true, то все работает, но при этом url <server/index.php/user/login
2. Кроме того, перестало работать $this->redirect('user/login'), но работает $this->redirect($this->createUrl('user/login'))

Помогите, плз, правильно выполнить настройку.
Привожу коды:
.htaccess в корне сайта

Код: Выделить всё

AddDefaultCharset utf-8
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
RedirectMatch 403 /\..*$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
main.php

Код: Выделить всё

        'urlManager'=>array(
            'urlFormat'=>'path',
            'showScriptName'=>false,
            'rules'=>array(
                    '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                    '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                    '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
            ), 
        ), 
Controller

Код: Выделить всё

    public function actionIndex()
    {
        if(appUser()->isGuest) $this->redirect('user/login');
        else $this->render('index');
    } 
P.S.: Все основные каталоги и файлы index.php и .htaccess находятся в /var/www
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Перенос сайта с Windows на Linux: маршрутизация

Сообщение anton44eg »

контроллер точно UserController? (именно такими буквами, в Linux все имена файлов case-sensative)
esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: Перенос сайта с Windows на Linux: маршрутизация

Сообщение esche »

Ошибка Apache (белая страница, чёрные буквы, без "стилей")?
RewriteEngine on
отрабатывает вообще?
...
Vagolo
Сообщения: 22
Зарегистрирован: 2014.01.18, 17:22

Re: Перенос сайта с Windows на Linux: маршрутизация

Сообщение Vagolo »

anton44eg писал(а):контроллер точно UserController? (именно такими буквами, в Linux все имена файлов case-sensative)
Использую Yii-User module от Mikhail Mangushev. Соответственно, ничего в наименованиях файлов не изменялось.
Vagolo
Сообщения: 22
Зарегистрирован: 2014.01.18, 17:22

Re: Перенос сайта с Windows на Linux: маршрутизация

Сообщение Vagolo »

esche писал(а):Ошибка Apache (белая страница, чёрные буквы, без "стилей")?
RewriteEngine on
отрабатывает вообще?
Да. Если набрать в адресной строке просто <server>, то срабатывает дефолтное действие основного контроллера (см. первый пост).
Vagolo
Сообщения: 22
Зарегистрирован: 2014.01.18, 17:22

Re: Перенос сайта с Windows на Linux: маршрутизация

Сообщение Vagolo »

Забыл сказать - каталог самого Yii находится на уровень выше корня сайта (/var/framework)
esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: Перенос сайта с Windows на Linux: маршрутизация

Сообщение esche »

Если набрать "просто сервер" - отработает index.php из корня. Он никаким образом не задействует RewriteEngine.

Добавьте для проверки сразу после rewriteEngine строчку:

Код: Выделить всё

RewriteEngine .* - [F]
или ещё интереснее - .htaccess вообще читается? На Debian по умолчанию AllowOverride не даёт использовать .htaccess
добавьте произвольный набор букв в первую строку

Код: Выделить всё

blablabla 
В обоих случаях сайт должен "поломаться".
...
Vagolo
Сообщения: 22
Зарегистрирован: 2014.01.18, 17:22

Re: Перенос сайта с Windows на Linux: маршрутизация

Сообщение Vagolo »

esche писал(а):Если набрать "просто сервер" - отработает index.php из корня. Он никаким образом не задействует RewriteEngine.

Добавьте для проверки сразу после rewriteEngine строчку:

Код: Выделить всё

RewriteEngine .* - [F]
или ещё интереснее - .htaccess вообще читается? На Debian по умолчанию AllowOverride не даёт использовать .htaccess
добавьте произвольный набор букв в первую строку

Код: Выделить всё

blablabla 
В обоих случаях сайт должен "поломаться".
ДА, виноват. На Debian по умолчанию AllowOverride стоит в none. Надо изменить на all.
Ответить