我目前正在将一个网站从WordPress移植到CakePHP,我对WP版本中使用的其中一条路线有疑问。
我必须将http://example.com/?specific_key=value
路由到http://example.com/controller/action
,但在默认主页路由捕获之前,我找不到用params捕获url的方法。
非常感谢任何建议或指示。
谢谢!
答案 0 :(得分:4)
尝试将以下内容添加到路径文件的顶部。检查param是否设置了值,并将'/'连接到您需要路由到的位置。这样它将在页面控制器路由之前匹配您的路由。
if (isset($_GET['specific_key']) && $_GET['specific_key'] === 'value') {
Router::connect('/', array(whatever controller/action you need));
}
// the rest of your routes
您还可以在htaccess文件中为其创建重写规则:
RewriteCond %{QUERY_STRING} ^specific_key=value$ [NC]
RewriteRule / /controller/action? [R=301,L]
第三个选项:使用自定义路线类:https://gist.github.com/3763800
创建文件APP/Lib/Route/QueryStringRoute.php
并将上述链接的内容放入其中。
然后在您的路线中执行:
App::uses('QueryStringRoute', 'Route');
Router::connect('/', array('controller' => 'your_controller'), array(
'routeClass' => 'QueryStringRoute',
'query' => array('specific_key' => 'value')
));
同样,它需要在你的家庭路线之前。
编辑:添加了第三个选项。
答案 1 :(得分:1)
无法根据GET参数设置路线。
编辑:至少使用内置的CakeRoute类。