1

私は現在、Web サイトを WordPress から CakePHP に移植していますが、WP バージョンで使用されているルートの 1 つに問題があります。

にルーティングhttp://example.com/?specific_key=valueする必要http://example.com/controller/actionがありますが、デフォルトのホームページルートがそれをキャッチする前に、params で URL をキャッチする方法が見つかりません。

アドバイスや指針をいただければ幸いです。

ありがとう!

4

2 に答える 2

4

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 番目のオプションを追加しました。

于 2012-09-21T01:15:37.753 に答える
1

GET パラメータに基づいてルートを設定することはできません。

編集: 少なくとも組み込みの CakeRoute クラスを使用します。

于 2012-09-20T18:52:12.347 に答える