DrZork101
(Julian)
October 28, 2013, 11:32am
1
I have an issue with URL routing and am not sure if Yii is capable of achieving what I want. We have users coming in on old (and malformed) urls such as:
/this-is-a-page&pgst=100
/this-is-a-page&ref=547
/this-is-a-page&ref=443
I currently have a rule in the urlManager config as such:
'this-is-a-page' => 'contentPage/index/src/37'
which works fine for visits to:
/this-is-a-page
but not for
this-is-a-page&pgst=100
etc.
Is it possible to write general rule to capture these cases? I have tried:
'this-is-a-page*' => 'contentPage/index/src/37'
&
'this-is-a-page<\w+>' => 'contentPage/index/src/37'
But they do not seem to work as I would expect.
Thanks for any help
Keith
(Kburton)
October 28, 2013, 11:44am
2
If you don’t need to capture the extra parameters, try:
'this-is-a-page.*' => 'contentPage/index/src/37'
or
'this-is-a-page<.*>' => 'contentPage/index/src/37'
I think the first is the correct one.
DrZork101
(Julian)
October 28, 2013, 11:53am
3
We don’t need the extra params, unfortunately neither of those seem to work. We are using:
'urlFormat'=>'path'
Will that make the solution any different?
This is my urlManager code in full:
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'this-is-a-page<.*>' => 'contentPage/index/src/37',
),
),
going to url:
/this-is-a-page
and getting the error:
Unable to resolve the request "this-is-a-page"
Keith
(Kburton)
October 28, 2013, 11:58am
4
Make sure you haven’t got another entry for urlManager defined in your config array.
DrZork101
(Julian)
October 28, 2013, 12:22pm
5
That is the only entry for urlManager in the config array
Keith
(Kburton)
October 28, 2013, 2:21pm
6
Try this:
'this-is-a-page<rest:.*>' => 'contentPage/index/src/37',
DrZork101
(Julian)
October 30, 2013, 5:37pm
7
Great, that worked! Thanks
fivjagetiya
(Vishwas Jagetiya)
October 4, 2019, 10:32am
8
I have to do the following generate a
$v2ApiList = array(
‘abc’,
‘def’
);
$v2Regex = ‘(’;
foreach ($v2ApiList as $index=>$v2Api) {
if($index>0)
{
$v2Regex = $v2Regex . ‘|’;
}
$v2Regex = $v2Regex . ‘\b’ . $v2Api . ‘\b’;
}
$v2Regex = $v2Regex . ‘)’;
‘rules’ => array(
‘service/v2/<controller:(?!’ . $v2ApiRegex . ‘)\w+>/<action:\w+>’ => ‘service/<controller>/<action>’,
‘service/v2/<controller:’ . $v2ApiRegex . ‘>/<action:\w+>’ => ‘service/v2/v2<controller>/<action>’)
this is to generate
‘service/v2/<controller:(?!(\banc\b|\bdef\b=))\w+>/<action:\w+>’ => ‘service/<controller>/<action>’,
and
‘service/v2/<controller:(\babc\b|\def\b)>/<action:\w+>’ => ‘service/v2/v2<controller>/<action>’
http://172.16.5.153:3000/index.php/service/v2/ab/de — this is going to
‘service/v2/<controller:(\babc\b|\def\b)>/<action:\w+>’ => ‘service/v2/v2<controller>/<action>’
instead it should go to
‘service/v2/<controller:(?!(\banc\b|\bdef\b=))\w+>/<action:\w+>’ => ‘service/<controller>/<action>’,
Please let me know how we can generate proper url set with dynamic regex