Не работает простое правило для UrlManager

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
Антон Смирнов
Сообщения: 284
Зарегистрирован: 2011.07.08, 10:37
Контактная информация:

Не работает простое правило для UrlManager

Сообщение Антон Смирнов »

Всем привет.

Хочу чтобы при наборе site.ru/a?b был контроллер site с action=index

Пишу в rules 'a?b'=>array('site/index') и ввожу site.ru/a?b

Ошибка: Unable to resolve the request "a". Экранирую знак вопроса: 'a\?b'=>array('site/index')

Та же ошибка.

Если убираю b, т.е. в правиле 'a?'=>array('site/index') и вводить site.ru/a? - все работает.

Подскажите, как обработать знак вопроса.
Аватара пользователя
sergebezborodov
Сообщения: 133
Зарегистрирован: 2010.06.10, 19:53
Откуда: Dnepropetrovsk-Sevastopol, UA
Контактная информация:

Re: Не работает простое правило для UrlManager

Сообщение sergebezborodov »

в урле знак вопроса означает начало GET параметров
слабо представляю как это связать с таким роутингом
A passion to perform
http://sergebezborodov.com
esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: Не работает простое правило для UrlManager

Сообщение esche »

'a'=>array('site/index')
а в контроллере обрабатывать $_GET['b']
...
Аватара пользователя
Антон Смирнов
Сообщения: 284
Зарегистрирован: 2011.07.08, 10:37
Контактная информация:

Re: Не работает простое правило для UrlManager

Сообщение Антон Смирнов »

Спасибо, как вариант подойдет. Можно, конечно и свой класс написать.

На старом сайте были адреса, вида:

page.php?name=mypage
cat.php?name=mycat

И обрабатывались файлами page.php и cat.php, а на новом сайте (на Yii) хотелось бы написать что-то типа:

Код: Выделить всё

'rules'=>array(
'page.php?name=<name:\w>'=>array('page/index'),
) 
R3D3
Сообщения: 352
Зарегистрирован: 2010.04.11, 14:52

Re: Не работает простое правило для UrlManager

Сообщение R3D3 »

Эти адреса

Код: Выделить всё

page.php?name=mypage
cat.php?name=mycat
очень логично трансформируются в адреса

Код: Выделить всё

page/mypage
cat/mycat
Соответственно page и cat - контроллеры, а mypage и mycat - параметры, которые с помощью правил urlManager будут передаваться в экшены вышеупомянутых контроллеров.

Если же вам хочется сохранить ссылки оригинальными в целях SEO, тогда в правилах urlManager можно прописать page.php как синоним для контроллера page, а cat.php - синоним для контроллера cat. А name будет параметром в экшене index в обоих контроллерах
Yii Jabber Conference: yii@conference.jabber.ru
Аватара пользователя
Антон Смирнов
Сообщения: 284
Зарегистрирован: 2011.07.08, 10:37
Контактная информация:

Re: Не работает простое правило для UrlManager

Сообщение Антон Смирнов »

R3D3 писал(а): Если же вам хочется сохранить ссылки оригинальными в целях SEO, тогда в правилах urlManager можно прописать page.php как синоним для контроллера page, а cat.php - синоним для контроллера cat. А name будет параметром в экшене index в обоих контроллерах
Да, именно сохранить адреса. Подскажите, пожалуйста, про то, как сделать синонимы или хотя бы скажите, где конкретно про это почитать.
esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: Не работает простое правило для UrlManager

Сообщение esche »

прочитайте про 301 редирект и передачу веса... и делайте с красивыми адресами - это, кстати, плюс с точки зрения СЕО.
Роботы довольно быстро реагируют на изменение УРЛ-ов. Только с СЕО-шниками согласуйте.
...
Аватара пользователя
Антон Смирнов
Сообщения: 284
Зарегистрирован: 2011.07.08, 10:37
Контактная информация:

Re: Не работает простое правило для UrlManager

Сообщение Антон Смирнов »

Спасибо за совет, но хочется оставить старые адреса. Как реализовать синонимы с помощью Yii ?
Ответить