请求放纵。我已经寻找答案并尝试了很多东西,所以我现在谦卑地转过来寻求帮助。它应该很简单:我正在转移到CakePhp,我想将旧的查询字符串(action = show& id = 2)重定向到groovy cake URL(/ Feature / view / 2)。
我已经在webroot的.htaccess文件中尝试了这个:
RewriteCond %{QUERY_STRING} ^action=show&id=([0-9]+)$
RewriteRule /Features/view/%1? [R,L]
没有爱。我也尝试过:
RewriteRule action=show&id=([0-9]+) /Features/view/$1 [L]
没有爱。
我尝试了Cakephp的routes.php:
Router::connect('index.php?action=show&id=([0-9]+)',array('controller' => 'features', 'action' => 'view', 'id' => $1));
但我没有看到没有证据表明正确的格式可以在routes.php中使用,所以这真的只是在祈祷。
可以这样做。对?谢谢你的建议!
答案 0 :(得分:0)
我认为你可以在router.php中做到这一点!
也许,你可以逃脱:
Router::connect('?action=:action&id=:id',
array(
'controller' => 'myController',
'action' => 'myAction',
),
array(
'action' => '[a-zA-Z]+',
'id' => '[0-9]+',
)
);
或者(可能更好)一系列更具体的形式,如:
Router::connect('?action=show&id=:id',
array(
'controller' => 'features',
'action' => 'view',
),
array(
'id' => '[0-9]+',
)
);
在这种情况下,action
和id
可以在myController的$this->request->params
中使用(对于像id
这样的标准,甚至可能会自动生成帮助!)
虽然我不确定路由元素(:foo)会不会像那样选择GET参数...
或者,您可以将所有内容发送到一个控制器,您应该会发现$this->request->params['url']
中列出了GET参数,因此您可以在控制器中路由所有内容(我想是其他控制器)。
听起来不是很好,但我知道你想保留一些遗留的网址!