routes ファイルの先頭に以下を追加してみてください。パラメータに値が設定されているかどうかを確認し、「/」をルーティング先に接続する必要があります。このようにして、ページコントローラールートの前にルートと一致します。
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]
3 番目のオプション: カスタム ルート クラスを使用します: 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')
));
繰り返しますが、ホーム ルートの前にある必要があります。
編集: 3 番目のオプションを追加しました。