как переписать URL в Yii?

У меня есть действие с именем contact в контроллере сайта, поэтому, когда я открываю его в браузере, URL отображается как: mysite.com/index.php/site/contactЯ хочу изменить его на имя представления действия, поэтому оно должно быть mysite.com/contact.php, как это сделать ?

0

Решение

Чтобы удалить index.php из URL, вам нужно добавить '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

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]