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

0

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

Теги:
yii
url-routing

1 ответ

3
Лучший ответ

Чтобы удалить 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

  • 0
    спасибо, но про URL вроде: mysite.com/controller/action?id=one, как изменить его на mysite.com/action
  • 0
    mysite.com/contact.php?id=1 должен отображать mysite.com/site/contact/id/1 , это не то, что вы имеете в виду?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню