1

我目前正在将一个网站从 WordPress 移植到 CakePHP,并且我在 WP 版本中使用的其中一个路由存在问题。

我必须路由http://example.com/?specific_key=value到,http://example.com/controller/action但在默认主页路由捕获它之前,我找不到使用参数捕获 url 的方法。

非常感谢任何建议或指示。

谢谢!

4

2 回答 2

4

尝试将以下内容添加到您的路线文件的顶部。检查参数是否设置了该值并将“/”连接到您需要路由到的位置。这样,它将在页面控制器路由之前匹配您的路由。

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')
));

同样,它需要在您的家乡路线之前。

编辑:添加了第三个选项。

于 2012-09-21T01:15:37.753 回答
1

无法基于 GET 参数设置路由。

编辑:至少使用内置的 CakeRoute 类。

于 2012-09-20T18:52:12.347 回答