Я пытаюсь выработать пользовательское требование URL. Мы являемся веб-сайтом, основанным на продуктах, и URL каждого продукта
https://www.domainname.com/product/index/id/product_id
Теперь я хочу, чтобы URL были удобными для пользователя и что-то вроде этого ..
https://www.domainname.com/productcustomurl
Для этого я создал поле с именем custom_url
в таблице product
где customurl будет храниться создателем продукта во время создания продукта. Для этого я создал правило в params.php следующим образом:
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'<id:(.*?)>' => 'product/index' //this rule
предполагая, что это будет перенаправлять пользователя всякий раз, когда кто-нибудь нажимает https://www.domainname.com/productcustomurl
с productcustomurl
в параметре id
, который работает нормально, но проблема в том, что это перенаправление всех и каждого на product/index
переопределение всех других маршрутов, таких как site/index
или же site/about
и т. д., что является проблемой. Я хочу, чтобы они работали. Как мне этого добиться, не влияя на нормальные маршруты сайта ??
Пожалуйста помоги.
Попробуйте заменить вашу последнюю строку конфигурации следующим:
'<productcustomurl:\w>' => 'product/index'
Сейчас, actionIndex
из ProductController
, должно быть так:
public function actionIndex($productcustomurl)
{
//Now, you can find a product by its custom url, and pass the finded product object to the view
}
Других решений пока нет …