Usage: RedirectRoute
The RedirectRoute redirects your route instead of routing it to a controller-action pair. This is super useful when dealing with legacy urls.
RedirectRoute extends the QueryStringParseRoute, so the documentation for that class also applies for this one!
There are some examples at the bottom.
You can have permanent and temporary redirects. RedirectRoute will always do a permanent redirect unless told different like:
<?php
array('permanent' => false)
?>
Url: /old/url/23/page:3
To: /news/show/23/page:3
<?php
App::import('Lib', 'RouteEnhancements.RouteClasses');
Router::connect(
'/old/url/*',
array(
'controller' => 'news',
'action' => 'show'
),
array(
'routeClass' => 'RedirectRoute',
)
);
?>
Url: /page.php?doaction=show&id=5
To: /pages/show/5
<?php
App::import('Lib', 'RouteEnhancements.RouteClasses');
Router::connect(
'/page.php',
array(
'controller' => 'pages',
'action' => ':doaction'
),
array(
'routeClass' => 'RedirectRoute',
'pass' => array('id')
)
);
?>
Url: /page.php?doaction=show&id=5
To: /pages/show/5
<?php
App::import('Lib', 'RouteEnhancements.RouteClasses');
Router::connect(
'/page.php',
array(
'controller' => 'pages',
'action' => ':doaction'
),
array(
'routeClass' => 'RedirectRoute',
'pass' => array('id'),
'permanent' => false
)
);
?>
Url: /page.php?doaction=users.show&id=5
To: /users/show/5
<?php
App::import('Lib', 'RouteEnhancements.RouteClasses');
Router::connect(
'/page.php',
array(
'controller' => ':doaction{/([a-z]+)\.[a-z]+/}',
'action' => ':doaction{/[a-z]+\.([a-z]+)/}'
),
array(
'routeClass' => 'RedirectRoute',
'pass' => array('id'),
'permanent' => false
)
);
?>
Url: /page.php?doaction=edit&id=5
To: /pages/edit/5
<?php
App::import('Lib', 'RouteEnhancements.RouteClasses');
Router::connect(
'/page.php',
array(
'controller' => 'pages',
'action' => ':doaction'
),
array(
'routeClass' => 'RedirectRoute',
'doaction' => 'show|edit',
'id' => '[0-9]+',
'pass' => array('id')
)
);
?>
Url: /page.php?doaction=index&id=5&page=3
To: /pages/index/5/page:3
<?php
App::import('Lib', 'RouteEnhancements.RouteClasses');
Router::connect(
'/page.php',
array(
'controller' => 'pages',
'action' => 'index'
),
array(
'routeClass' => 'RedirectRoute',
'pass' => array('id'),
'ignore' => array('doaction')
)
);
?>
Url: /page.php?doaction=index&id=5&page=3
To: /pages/index/5/pagenumber:3
<?php
App::import('Lib', 'RouteEnhancements.RouteClasses');
Router::connect(
'/page.php',
array(
'controller' => 'pages',
'action' => 'index'
),
array(
'routeClass' => 'RedirectRoute',
'pass' => array('id'),
'aliases' => array('page' => 'pagenumber'),
'ignore' => array('doaction')
)
);
?>