using url manager in yii to change url to seo friendly

seo, yii

Solution

The rule should be (to remove the extra city, which is the GET parameter name):

'<controller:\w+>/<action:\w+>/<city:\w+>'=>'<controller>/<action>', // not city:\d, since Delhi is a string, not digit

So the rule should be able to match the parameter name, incase you had foo/Delhi, you'd use `<foo:\w+>`.

And to remove the `?` use `appendParams` of `CUrlManager`, (in your `urlManager` config):

'urlManager'=>array(
    'urlFormat'=>'path',
    'appendParams'=>true,
    // ... more properties ...
    'rules'=>array(
        '<controller:\w+>/<action:\w+>/<city:\w+>'=>'<controller>/<action>',
        // ... more rules ...
    )
)

When `appendParams`

is true, GET parameters will be appended to the path info and separate from each other using slashes.

Update: Incase you have more than one parameter being passed to the action i.e:

http://localhost/nbnd/search/manualsearch/Delhi?tosearch=restaurants

Use a `/*` at the end of the rule:

'<controller:\w+>/<action:\w+>/<city:\w+>/*'=>'<controller>/<action>'

To get urls of form:

http://localhost/nbnd/search/manualsearch/Delhi/tosearch/restaurants    

Problem

How can I convert these URL to SEO friendly URL I tried Url manager in yii but didn't get the proper result is there any good tutorial regarding url manager ``` http://localhost/nbnd/search/city?city=new+york http://localhost/nbnd/search/manualsearch?tosearch=Hotel+%26+Restaurants+&city=New+york&yt0=Search&searchtype= ``` I tried to the following setting in url manager ``` '<controller:\w+>/<action:\w+>/<city:\d>'=>'<controller>/<action>', ``` which works with url `http://localhost/nbnd/search/city/city/Delhi` I wish to reduce this url to `http://localhost/nbnd/search/city/Delhi` and the link I generating in my view is `<?php echo CHtml::link(CHtml::encode($data->city), array('/search/city', 'city'=>$data->city)); ?>` This generates link as `http://localhost/nbnd/search/city?city=Delhi` How can I convert that link to like `http://localhost/nbnd/search/city/Delhi`

Original source