2

URLパターンが一致したときにセグメントにURLが追加されるように、フックをどのように作成する必要がありますか?

例えば:

/site/product/id

ルート:

/site/product/id/title-from-query
4

1 に答える 1

1

コメントで提案したように、Codeigniter のルートはこれに最適です。それらを使用すると、フレームワークにとって意味のあるものにプッシュしながら、ユーザー/ブラウザーが URL で表示できるものを正確に制御できます。

routes.php には、次のようなものが必要です。

$route['site/product/(:num)/(:any)'] = 'controller/method/$1';
$route['site/product/(:num)] = 'controller/method/$1';

最初の行の 2 番目のパラメータ(:any)は、ルートが を受け入れることを許可するためのtitle-from-queryものです。2 番目の行はオプションであり、no が指定されていない場合を処理するためにありtitle-from-queryます。'controller/method'コントローラーの名前と使用されているメソッドに置き換える必要があります。

アップデート:

これらの URL を作成するには (データベースにまだスラッグがない場合)、次のurl_title()方法を使用できます。

echo anchor('site/product/id'.url_title($title));

上記は、最後に「スラッグ」とのリンクを作成します。リダイレクトを強制するには、コントローラーに正しいセグメントが設定されていることを確認し、設定されていない場合はリダイレクトする必要があります。StackOverflow の実装は、SEO 目的である可能性が最も高く、スラッグを削除すると、スラッグのあるアドレスに移動し、ID を使用してそれが何であるかを把握する必要があります。スラッグが提供されていない場合、リダイレクトするには同じロジックが必要になります。

redirect('/site/product/id/'.$slug, 'location', 301);
于 2012-08-22T11:24:48.197 に答える