Cakephp使用regex路由以呈现相同的视图,但使用动态URL


Cakephp route with regex to render same view but with dynamic URL

我使用的是Cakephp 2.0,我有一个控制器设置来接受动态url以呈现相同的视图:

http://domain/some-text-sid-2
http://domain/some-text-sid-3
.
.
.

ajax会相应地更改页面的所有内容。但当我访问这个页面或从其他页面重定向到这个页面时,我想显示下面提到的链接中呈现的视图

http://domain/some-text

但是URL应该保持不变。例如,如果我访问页面:

http://domain/some-text-sid-2

那么视图应该是

http://domain/some-text

但是URL不应该改变。请提前提供帮助并表示感谢。

一个可能的解决方案是将以下路由添加到/Config/routes.php:

//Matches anything except URLs that include 'my_controller' to prevent looping
Router::redirect('/:text', array('controller' => 'my_controller', 'action' => 'my_action'), array('persist' => ['text'],'text'=>'(?!my_controller)(.*)'));

然后在重定向后的操作中提取text

class MyController extends AppController 
{
    public function my_action() {
        $text = $this->params->named['text'];
        //[...] process action
    }
 }