2016-11-30 3 views
0

После раскомментируйте enablePrettyUrl получить 404 ошибкиПрием 404 после раскомментируйте enablePrettyUrl YII2

Например:

Запрошенный URL/сайт/индекс не найден на этом сервере.

/2.4.7 (Ubuntu) сервер Apache на yiibasic.com порт 80

Когда я комментирую его снова, все работает

'components' => [ 
    'urlManager' => [ 
     'enablePrettyUrl' => true, 
     'showScriptName' => false, 
     'rules' => [ 
     ], 
    ], 
] 

Не могу понять, в чем проблема.
.htaccess:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule . index.php 
+0

Пожалуйста, добавьте конфигурацию и журналы Apache. – raina77ow

+0

вопрос был отредактирован – wiaim

ответ

0

The (Yii2) менеджер URL-поддерживает два формата URL:

формат URL по умолчанию; симпатичный формат URL.

По умолчанию 'enablePrettyUrl' устанавливается в ложь это означает, что URL-адрес имеет формат

your/index.php?r=post%2Fview&id=100 

Если раскомментировать 'enablePrettyUrl' => верно,

'components' => [ 
    'urlManager' => [ 
    //'enablePrettyUrl' => true, 
    'showScriptName' => false, 
    'rules' => [ 
    ], 
    ], 
] 

включить формат prettyUrl like:

/index.php/post/100 

как будто вы легко видите, что два формата отличаются друг от друга, поэтому expl ИВТ вызов на основе формата возвращает ошибку 404 .. При изменении формата urlManager включения или отключения довольно URL ..

вы можете вызвать URL избежать этой проблемы, используя urlHelper

use yii\helpers\Url; 
echo Url::to(['post/view', 'id' => 100]); 

с этим помощником Yii2 создать правильный URL в соответствии с симпатичной URL, позволяющей государству в использовании

Вы можете найти краткое руководство по yii2 маршрутизации здесь http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html

+0

Где я должен использовать этот помощник? В config или в каждом файле уточните пожалуйста – wiaim

+0

Url :: to (9 должен использоваться в каждом вызове, чтобы избежать ошибки, если вы изменили статус prettyUrl. Я добавил ссылку в ответ на краткое руководство по маршрутизации yii2 – scaisEdge

0

После добавления файла .htaccess в папке ./web (при использовании базового Templa te), вы должны затем добавить некоторые правила в разделе urlManager конфигурационного файла web.php ... см. ниже

'urlManager' => [ 
      'enablePrettyUrl' => true, 
      'showScriptName' => false, 
      'enableStrictParsing' => false, 
      'rules' => array(
       '<controller:\w+>/<id:\d+>' => '<controller>/view', 
       '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
       '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
      ), 
     ],