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`