skip to Main Content

I have catalogue with products. Urls for products looks like this domain.com/adv?id=14792.
I want to beautify urls like this domain.com/adv/14792.

In web.php I tried to like this

'urlManager' => [
 'enablePrettyUrl' => true,
 'showScriptName' => false,
 'enableStrictParsing' => true,
 'rules' => [
  'adv/<id:d+>' => 'site/adv',
  '<alias:[w-]+>' => 'site/<alias>',
 ],
],

and there is no result.

I tried another variant in rules block:

'rules' => [
  'adv/<id:d+>' => 'adv',
  '<alias:[w-]+>' => 'site/<alias>',
 ],

and urls start to look like I want. But on this link I get 404 page.

2

Answers


  1. Chosen as BEST ANSWER

    I solved my problem by myself. This is my urlmanager module now:

    'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
          'adv/<id:d+>' => 'site/adv',
          '<alias:[w-]+>' => 'site/<alias>',
          '<controller:w+>/<action:w+>/' => '<controller>/<action>',
        ],
    

    this construction build url from https://example.com/adv?id=123456 to https://example.com/adv/123456. In view link build with

    Html::a($insideEl,Url::to(['adv','id' => $ladvert->id]))
    

    and in siteController action is

    actionAdv($id)
    

    Thanx.


  2. Please use action with adv so that it work.

        'rules' => [
      'adv/<id:d+>' => 'adv/<add some action here>',
      '<alias:[w-]+>' => 'site/<alias>',
     ],
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search