У меня есть действие с именем contact в контроллере сайта, поэтому, открыв его в браузере, url отображается как: mysite.com/index.php/site/contact
, я хочу изменить его как просто имя представления действие, поэтому должно быть mysite.com/contact.php
, как это сделать?
Чтобы удалить index.php из URL 'showScriptName' => false
вам нужно добавить 'showScriptName' => false
в свой массив urlManager компонентов в файле /protected/config/main.php:
// application components
'components'=>array(
...
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
...
),
...
),
...
),
Это сделает маршрут для вашей страницы-участника mysite.com/site/contact
. Чтобы удалить /site
вам нужно будет отредактировать массив правил, что-то вроде этого может работать;
// application components
'components'=>array(
...
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
...
'<action:\w+>.php'=>'site/<action>',
...
),
...
),
...
),
Это означает, что URL-адрес mysite.com/contact.php
отобразит маршрут сайта/контакта.
редактировать
В ответ на ваш вопрос "нет, я хочу, чтобы он отображал mysite.com/one, где один является идентификатором строки":
Вы должны быть осторожны с такими короткими правилами URL-адреса, поскольку такие общие правила будут подбираться другими путями и перенаправлять пользователя, когда вы не хотите, чтобы их перенаправляли. Однако для перенаправления mysite/one
на mysite/mycontroller/myaction?id=one
вы можете использовать '<id:\w+>'=>'mycontroller/myaction'
Но, как я уже сказал, будьте осторожны, это будет перенаправлять все одним путём слов. например, возьмите этот сценарий:
user
index
действию user
контроллера (user/index
маршрута)mysite.com/user
(который обычно mysite.com/user/index
) Теперь вместо этого будет перенаправлен пользователь на mysite/mycontroller/myaction?id=user
mysite.com/contact.php?id=1
должен отображатьmysite.com/site/contact/id/1
, это не то, что вы имеете в виду?