4

CodeIgniterに(ルーティングを介して)変更する方法はありますか?

example.com/category/4example.com/category/foo-bar

データベース内Foo Barのカテゴリの名前はどこにありますか?4

SEOに適したURLからのアクセスは許可する必要がありますが、整数を介したアクセスは404エラーを引き起こすはずです。

これも動的に機能するはずです。整数は、対応するカテゴリ名のURLセーフバージョンに自動的に変換されます。

「ナメクジ」を使用するいくつかの解決策を見てきました...まともな代替手段はありますか?

ありがとう。

4

4 に答える 4

4

私は暇なときにCodeIgniterを使って仕事をしているのはここ数ヶ月だけなので、まだ学んでいますが、これを試してみます(穏やかに):

url_title()URLヘルパー(もちろんロードする必要があります)には、に変更Foo Barされる関数がありますfoo-bar

$name = 'Foo Bar';
$seo_name = url_title($name, TRUE);
// Produces: foo-bar

http://codeigniter.com/user_guide/helpers/url_helper.html

URLヘルパーは、不正な文字を取り除き、デフォルトでハイフン(アンダースコア、パラメーター別)を挿入し、TRUEパラメーターはすべてを小文字にします。

この問題を解決するにforeachは、routes.phpファイルでステートメントを実行するかurl_title()、IDではなくURLに値を渡してurl_title()、DB内のカテゴリ名と値が一致するようにコードを変更できると思います。

于 2011-02-21T23:08:27.793 に答える
0

4と「foo-bar」の間のリンクをDBに保存する必要があるため、いくつかのクエリを実行する必要があります。これは通常、CIのルーティングを介して行われません。また、ルーティングはURLをコントローラーと関数にポイントするだけであり、URLの書き換えとはほとんど関係がありません。

ナメクジを使いたくないのはなぜですか?

于 2011-02-21T17:07:36.670 に答える
0

この方法またはこの方法を使用して、検索エンジンに適したルートをデータベースに保存してみることができます。

404をスローすることはお勧めしません。Googleが両方のhttp://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.htmlのインデックスを作成することを心配している場合は、代わりに正規リンクタグを使用してください。

しかし、本当に必要な場合は、pre_controllerフックhttp://codeigniter.com/user_guide/general/hooks.html中に呼び出され、URLの2番目のセグメントが整数かどうかを確認する関数を作成できます。 show_404()メソッドを呼び出します。この関数を作成するときのおそらくより良い解決策は、SEO対応バージョンにリダイレクトすることです。

于 2011-02-21T22:57:20.893 に答える
-1

CodeIgniterに(ルーティングを介して)変更する方法はありますか?

example.com/category/4からexample.com/category/foo-bar

ここで、Foo Barはデータベースのカテゴリ4の名前ですか?

はい。

CI 3を使用して、 http://www.codeigniter.com/user_guide/general/routing.html

コールバックを使用、PHP> = 5.3

$route['products/([a-zA-Z]+)/edit/(\d+)'] = function ($product_type, $id)

{

        return 'catalog/product_edit/' . strtolower($product_type) . '/' . $id;
};

カテゴリの名前を抽出する関数を呼び出すようにルーティングできます。

私があなたの質問に答えて、それがスピーディーで軽いと信じているので、より多くの人々がcodeigniterを好きになるのを助けることができることを願っています。

スラッグの使用は、Webアプリケーションをより安全にするために重要です。これは私が重要だと思います。

より良い解決策を提供するために、ルートを使用することをお勧めします。

$route['(:any)/method/(:num)']  = 'Class/method';

また

$route['(:any)/method/(:num)']  = 'Class/method/$1';

$route['(:any)/gallery/(:num)']  = 'Class/gallery/$1';

base_url()/business-services/gallery/6 

base_url()/travel/gallery/12    

codeigniterでルートを変更する方法

楽しむ :)

于 2015-06-17T03:46:12.207 に答える