Как настроить URL manager без ошибки 404

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

Re: Как настроить URL manager без ошибки 404

Сообщение skynin »

svil писал(а): 2018.07.10, 18:51 Субдомен направляет сразу в web- не работает ЧПУ как и раньше
если Апач смотрит в web, то там должен быть вот такой простой .htaccess

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

# Mod_Autoindex
<IfModule mod_autoindex.c>
  # Disable indexes
    Options -Indexes
</IfModule>

# Mod_Rewrite
<IfModule mod_rewrite.c>
  # Enable symlinks
  Options +FollowSymlinks
  # Enable mod_rewrite
  RewriteEngine On

  # If a directory or a file exists, use the request directly
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  # Otherwise forward the request to index.php
  RewriteRule . index.php
</IfModule>
если он там, и все равно не работает, тогда давайте сюда то что пишет вам Дебаг панель, в разделе Request

Если Дебаг панели нет, то либо она не включена, либо таки вы что-то еще не настроили.

Кто выдает вам 404ую, веб-сервер или Yii2?
Последний раз редактировалось skynin 2018.07.10, 18:59, всего редактировалось 1 раз.
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Как настроить URL manager без ошибки 404

Сообщение andku83 »

Ищем куда смотрит апач (предположим "/var/www/html/"),
в найденный каталог записываем наше приложение так чтобы путь до главного файла получился "/var/www/html/web/index.php",
в каталоге "/var/www/html/" размещаем .htaccess:

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

# Mod_Autoindex
<IfModule mod_autoindex.c>
    # Disable Indexes
    Options -Indexes
</IfModule>

#Mod_Rewrite
<IfModule mod_rewrite.c>
    # Enable symlinks
     Options +FollowSymlinks
    # Enable mod_rewrite
    RewriteEngine On

    # web redirect
    RewriteCond %{REQUEST_URI} ^(.*)$
    RewriteRule ^(.*)$ web/$1
</IfModule>
в каталоге ""/var/www/html/web/" - .htaccess:

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

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
в большинстве случаев больше ничего не нужно
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: Как настроить URL manager без ошибки 404

Сообщение svil »

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

The requested URL /category/29 was not found on this server.
Ошибка
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Как настроить URL manager без ошибки 404

Сообщение skynin »

svil писал(а): 2018.07.10, 19:17

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

The requested URL /category/29 was not found on this server.
Ошибка
скриншот давайте, если не можете ответить - это вам веб-сервер пишет или Yii2

от ответа на этот вопрос и зависит куда копать
если веб-сервер - то значит настроен не так он.

он должен передать /category/29 на обработку Yii2

Если Yii2 получает такой запрос, но не может его обработать (правило записано неправильно, контроллер не находится, у контроллера нет такого action), значит проблема в его настройке.
и может быть смешная, как недавно в Отвалился Backend
просто чего-то недокопировали, например какой-то конфиг файл.

но пока мне например непонятно, где проблема, в настройке веб-сервера или Yii2

давайте скриншот :)
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: Как настроить URL manager без ошибки 404

Сообщение svil »

сonfig/web.php

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

<?php

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

$config = [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'language' => 'ru-RU', 'defaultRoute'=>'category/index',
    'aliases' => [
        '@bower' => '@vendor/bower-asset',
        '@npm'   => '@vendor/npm-asset',
    ],
    'modules' => [
        'admin' => [
            'class' => 'app\modules\admin\Module',
            'layout'=> 'admin',
             'defaultRoute'=>'order/index',
        ],
    ],
    'components' => [
        'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            // 'cookieValidationKey' => 'OFwTWd2ye4uytMHdXAmuLG3jtikD_3zw',
            'cookieValidationKey' => 'yYy4YYYX8lYyYyQOl8vOcO6ROo7i8twO',
        //  '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' => false, //true когда почта реально не будет отправляться,
            //если надо отправлять - устанавливаем в false и устанавливаем конфигурацию
            //smtp сервера - пример есть в непереводной документации
            //https://www.yiiframework.com/extension/yiisoft/yii2-swiftmailer/doc/api/2.2/yii-swiftmailer-mailer
        //    'host' => 'smtp.gmail.com',
          //  'username' => 'username',
           // 'password' => 'password',
            'transport' => [
                'class' => 'Swift_SmtpTransport',
                'host' => 'smtp.mail.ru',
                'username' => 'developersvil1502',
                'password' => 'Tanka2905Iantra',
                'port' => '465',
                'encryption' => 'ssl',
            ],



        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'db' => $db,

        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                'category/<id:\d+>/page/<page:\d+>' => 'category/view',
                'category/<id:\d+>' => 'category/view',
                'product/<id:\d+>' => 'product/view',
                'search' => 'category/search',
                'cart/<id:\d+>' => 'cart/pi',
                'brand/<id:\d+>' => 'brand/view',
                'test/<id:\d+>/page/<page:\d+>' => 'test/page',
                'test/<id:\d+>' => 'test/page',

                //    '' => 'site/index',
                // '<controller:\w+>/<action:\w+>/' => '<controller>/<action>',
            ],
        ],

    ],
    'params' => $params,
];

if (YII_ENV_DEV) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = [
        'class' => 'yii\debug\Module',
        // uncomment the following to add your IP if you are not connecting from localhost.
        //'allowedIPs' => ['127.0.0.1', '::1'],
    ];

    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        'allowedIPs' => ['*'],
        // uncomment the following to add your IP if you are not connecting from localhost.
       // 'allowedIPs' => ['127.0.0.1', '::1'],
    ];
}

return $config;
web/.htaccess

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

# Mod_Autoindex
<IfModule mod_autoindex.c>
  # Disable indexes
    Options -Indexes
</IfModule>

# Mod_Rewrite
<IfModule mod_rewrite.c>
  # Enable symlinks
  Options +FollowSymlinks
  # Enable mod_rewrite
  RewriteEngine On

  # If a directory or a file exists, use the request directly
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  # Otherwise forward the request to index.php
  RewriteRule . index.php
</IfModule>
web/index.php

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

<?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');

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

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

(new yii\web\Application($config))->run();
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: Как настроить URL manager без ошибки 404

Сообщение svil »

Не работает только ЧПУ в виде

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

'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                'category/<id:\d+>/page/<page:\d+>' => 'category/view',
                'category/<id:\d+>' => 'category/view',
                'product/<id:\d+>' => 'product/view',
                'search' => 'category/search',
                'cart/<id:\d+>' => 'cart/pi',
                'brand/<id:\d+>' => 'brand/view',
                'test/<id:\d+>/page/<page:\d+>' => 'test/page',
                'test/<id:\d+>' => 'test/page',

                //    '' => 'site/index',
                // '<controller:\w+>/<action:\w+>/' => '<controller>/<action>',
            ],
        ],
Убираю этот код - и все ссылки работают
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Как настроить URL manager без ошибки 404

Сообщение skynin »

Замечательно, стоит Апач.
У которого похоже стоит AllowOverride none, для этого каталога, или вообще.

Ваш Апач не пропускает запросы к Yii вообще, так что конфиги Yii пока ни при чем.

см AllowOverride директива

а может у вас на сервере не установлен mod_rewrite ?

-- Убираю этот код - и все ссылки работают
index.php с параметрами он конечно вызывает :)
хотя и это можно у него отключить. Но - обработка index.php у вас включена. Уже хорошо :)

вобщем мы все там же
Сообщение skynin » 2018.07.10, 13:53
настройки вебсервера
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: Как настроить URL manager без ошибки 404

Сообщение svil »

Завтра посмотрят включено или нет
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Как настроить URL manager без ошибки 404

Сообщение Dominus »

Ну вы можете и сами посмотреть. Для этого создать файл info.php в папке web, рядом с файлом index.php, со следующим содержимым:

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

<?php
phpinfo();
и вызвать: http://itcrc.ru/info.php
Нажать в браузере Ctrl+f и в поиске на странице ввести mod_rewrite
Если загружен то он будет в секции Loaded Modules
Изображение
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: Как настроить URL manager без ошибки 404

Сообщение svil »

The requested URL /info.php was not found on this server.
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Как настроить URL manager без ошибки 404

Сообщение Dominus »

что за хостинг?
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: Как настроить URL manager без ошибки 404

Сообщение svil »

посмотрела по-другому : нет в модуле mod_rewrite
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: Как настроить URL manager без ошибки 404

Сообщение svil »

Зарабтало с модулем mod_rewrite :lol:
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: Как настроить URL manager без ошибки 404

Сообщение svil »

Skynin, Dominus, Andku83, спасибо за помощь.
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Как настроить URL manager без ошибки 404

Сообщение skynin »

svil писал(а): 2018.07.11, 09:57 Зарабтало с модулем mod_rewrite :lol:
Кстати, без него ЧПУ и в Вордпрессе не будут работать.
Там такой же подход:

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

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
S.Undo
Сообщения: 4
Зарегистрирован: 2021.01.26, 18:07

Re: Как настроить URL manager без ошибки 404

Сообщение S.Undo »

@svil, как решили вопрос?
Ответить