2015-04-21 2 views
1

Я хочу, чтобы этот адрес /admin/personal/index запустить personal контроллер и index действия, поэтому я добавить это правило urlManagerКак игнорировать часть URL в правилах urlManager?

'admin/<controller>/<action>' => '<controller>/<action>' 

но мне кажется, что он думает admin - это контроллер и personal - это действие. Но я хочу проигнорировать admin часть url вообще. Как я могу это достичь? (без .htaccess, если возможно)

также попробуйте решение Jorgen, но все же получите ошибку 404. И в журналах эта линия:

Request parsed with URL rule: <module:\w+>/<controller:\w+>/<action:\w+> 

основной локальной конфигурации

'urlManager' => [ 
     'showScriptName' => false, 
     'enablePrettyUrl' => true, 
     'rules' => [ 
      'admin/<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
     ], 
    ], 

.htaccess

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 

Он работает только тогда, когда я писал следующее правило

'<module:\w+>/<controller:\w+>/<action:\w+>' => '<controller>/<action>', 

, но в в этом случае префикс «admin», конечно, не добавляет для URL. Но напрямую, он работает нормально.

Я нашел причину: в общих конфигах были другие правила.

Thx, Jorgen, для оказания помощи! Вопрос закрыт.

ответ

0

Попробуйте это:

'admin/<controller:\w+>/<action:\w+>' => '<controller>/<action>' 

Вы должны указать регулярное выражение для параметров. Возможно, у вас также есть конфликт, если перед этим параметром есть параметр для <controller:\w+>/<action:\w+>. Попробуйте поместить его в качестве первого параметра.

Из docs

Правило URL может быть связан с несколькими именованными параметрами запроса, которые указаны в схеме в формате, где ParamName определяет имя параметра и RegExp является необязательным регулярное выражение, используемое для соответствия значениям параметров. Если RegExp не указан, это означает, что значение параметра должно быть строкой без косой черты.

Примечание: для параметров можно указывать только регулярные выражения. Остальная часть шаблона рассматривается как простой текст.

+0

по-прежнему получают ошибку 404. Но в журнале у меня есть это: «Запрос проанализирован с правилом URL: /<контроллер: \ w +>/". Я уверен, что правило применяется правильно, но Yii все еще анализирует его по умолчанию. – Skav

+0

Я проверил это без правил, Yii записал: «Нет совпадающих правил URL. Использование логики разбора URL по умолчанию», поэтому над сообщением маршрута не указано значение по умолчанию. – Skav

+0

Вы пытались с 'admin' или просто с' '? Я не уверен, что yii распознает модуль. И вы разместили свое правило поверх массива правил? –

Смежные вопросы