Мы строим сайт на Yii (1.1.13); его магазин автозапчастей & механизм управления транзакциями.
Когда его отдают для SEO проверки компании SEO, компания делает вывод:
Ассортимент в БД динамически обновляется ежедневно.
Компания предложила решить проблему с генератором динамических URL или не использовать ее в пользу удобных для пользователя URL-адресов / оптимизированных для SEO URL-адресов.
Как исправить ошибки динамического генератора URL и возможно ли использовать что-то. еще как предложено?
Настройка управления URL отключена:
// uncomment the following to enable URLs in path-format
/*
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),
*/
Когда я раскомментировал это, сайт работает хорошо, но некоторые из меню подсистем не функционируют, потому что они связаны с некоторыми параметрами GET …
Недавно сделал что-то подобное для магазина.
Обычно вы будете делать это:
1) Для каждого динамического URL динамично сделать его чистым альтернативным URL
2) Перенаправить со старого на чистый URL.
3) ПРИБЫЛЬ!
Теперь что касается деталей:
Самым сложным является понимание того, можно ли сформировать новый URL-адрес и, если да, перенаправить на него. Я думаю, что вы можете сделать это либо в customUrlRule (что немного грязно), либо в контроллере (который мне нравится больше).
Допустим, вы выбрали контроллер:
В действии контроллера, определить, пришел ли новый URL-адрес пользователя. Если есть И ЗАПРОСИТЬ URL! == НОВЫЙ URL, вы просто переходите к логике контроллера. Если нет, вы перенаправляете на новый URL. Я думаю, что это должно быть удобно, если
1) оба типа URL обрабатываются с помощью или разных контроллеров и действий и включают логику, описанную выше.
2) Вы используете какой-то метод, чтобы дать URL нового и старого типа, передавая им одинаковые параметры. Например, вы можете использовать Yii :: app () -> createUrl ($ params) для нового типа Url и некоторый пользовательский метод, то есть $ myModelInstance-> createUrl ($ params)
3) Новые URL создаются и обрабатываются с пользовательское правило URL
4) В вашем менеджере URL у вас есть пользовательское правило для новых URL и обычное правило для старых URL в этом приоритете.
Подвести итог:
Если пользователь выходит из старого URL-адреса, выполняется действие контроллера, где выполняются некоторые дополнительные проверки. Мы проверяем, может ли быть создан новый URL, мы также можем проверить некоторые дополнительные вещи, то есть синхронизироваться с некоторой дополнительной базой данных SEO URL, чтобы узнать, нужно ли перенаправлять этот URL.
Если новый URL может быть создан — мы перенаправляем на него.
Браузер запрашивает запрос, который анализируется с вашим пользовательским правилом URL, и выполняется соответствующий контроллер и действие.
Других решений пока нет …