[РЕШЕНО] Убрать /frontend/web/ из строки адреса

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
raokean
Сообщения: 2
Зарегистрирован: 2015.03.22, 09:28

Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса

Сообщение raokean »

Добрый вечер!
Помогите пожалуйста, не могу разобраться с htaccess сайт сейчас в локальной машине доступен по адресу: http://localhost:8888/avito.ru/vladimir/school
после нескольких манипуляции с web/index.php и config/web.php добился красоты такого плана: http://localhost:8888/avito.ru/vladimir ... el/action/
чего и требовалось по ссылкам в меню переход осуществляется корректно, пока нет передачи параметров контроллеру подобным образом:http://localhost:8888/avito.ru/vladimir ... date?id=33 страница перезагружается но параметры не доходят
до пункта назначения. Если изменить значение переменной enablePrettyUrl на false в файле config/web.php то все отрабатывает
как положено. Конфигурационный файл имеет следующий вид:

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

<?php

$params = require(__DIR__ . '/params.php');

$config = [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
	'name'=>'СМКО 1354',
	'defaultRoute' => 'exam-tab',
	'language' => 'ru-RU', // или en-US
    'components' => [
        'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            'cookieValidationKey' => '0nR5tSlarKlLLNZ7fo1ngnHWdnfmB0zR',
            'baseUrl' => 'http://localhost:8888/avito.ru/vladimir/school/web',
            //'baseUrl' => '',
        ],
        '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'],
                ],
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['info'],
                    'categories' => ['test_category'],
                    'logFile' => '/Applications/MAMP/htdocs/avito.ru/vladimir/school/runtime/logs/test_success.log',
                ],
            ],
        ],
        'db' => require(__DIR__ . '/db.php'),
        
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            //'enableScriptParsing' => false,
            'rules' => [
                //'<action:\w+>' => 'site/<action>',
            ],
        ],
       /**/
    ],
	'modules' => [
	   'gridview' =>  [
			'class' => '\kartik\grid\Module'
		]
	],
    'params' => $params,
];

if (YII_ENV_DEV) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = [
        'class' => 'yii\debug\Module',
		//'allowedIPs' => ['94.180.2.54','94.180.41.88']
//		'allowedIPs' => ['127.0.0.1','::1']
        'allowedIPs' => ['213.230.101.73']
    ];

    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
		//'allowedIPs' => ['94.180.2.54','94.180.41.88']
		//'allowedIPs' => ['127.0.0.1','::1']
		'allowedIPs' => ['213.230.101.73']
    ];
}

return $config;
файл .htaccess имеет следующий вид:

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

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

RewriteCond %{REQUEST_URI} !^/(web)
RewriteRule ^assets/(.*)$ /web/assets/$1 [L]
RewriteRule ^css/(.*)$ web/css/$1 [L]
RewriteRule ^js/(.*)$ web/js/$1 [L]
RewriteRule ^images/(.*)$ web/images/$1 [L]
RewriteRule (.*) /web/$1

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
И наконец файл перенесенный из каталога web в корень, имеет следующее содержания:

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

<?php

// comment out the following two lines when deployed to production
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
// include functions file
require __DIR__ . '/functions.php';

require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/config/web.php');

(new yii\web\Application($config))->run();
Как сделать что бы параметры проходили через строгий контроль htaccess?
В регулярных выражениях объяснятся не умею, помогите пожалуйста!
Аватара пользователя
Йож
Сообщения: 574
Зарегистрирован: 2015.08.26, 03:05

Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса

Сообщение Йож »

ЧТо имеете ввиду под "строгий контроль"? Пусть Контроллер отрабатывает

Зачем столько одинаковых правил в htaccess? Хватит последнего: RewriteRule (.*) /web/$1

"страница перезагружается но параметры не доходят"
Вам надо urlManager -> rules настроить
lgXenos
Сообщения: 243
Зарегистрирован: 2015.11.30, 15:42

Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса

Сообщение lgXenos »

Долго пытался вникнуть в тему. Решение гораздо ближе полного копирования конфигов
Файл:
frontend/config/main.php

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

    'components' => [
        'request' => [
            'csrfParam' => '_csrf-frontend',
            'baseUrl' => '' // <--- просто пустые скобки
        ],
В качестве корневого htaccess, использовал свое решение для мульти-доменов, которое выкладывал и обсуждал на форуме
https://github.com/lgXenos/multisite-hack
lycifer3
Сообщения: 23
Зарегистрирован: 2016.03.24, 14:40

Re: [РЕШЕНО] Убрать /frontend/web/ из строки адреса

Сообщение lycifer3 »

У меня такой .htaccess не работает я уже не знаю что с ним делать
Ответить