0

したがって、CodeIgniterのWebサイトであるForrstの例を次に示します。

http://forrst.com/posts/PHP_Nano_Framework_WIP_Just_throwing_some_ideas_o-mU8

その素敵なURLを見てください。ルートサイト、次にposts投稿タイトルと短い抜粋があります。これは、ユーザーエクスペリエンスにとって非常に優れています。

しかし、私のCodeIgniterサイトのURLは単純にひどいものです。例えば

http://mysite.com/code/view/120

したがって、コントローラーにアクセスし、次にcode関数にアクセスし、最後に投稿IDがあります(それに基づいてデータベースクエリを実行します)。view20

ルーティングができることに気づきました。したがって、routes.phpファイルに次のように記述します。

$route['posts/(:num)'] = "code/view/$1";-したがって、これによりhttp://mysite.com/posts/120はhttp://mysite.com/code/view/120同じになります。もう少しいいです、私はあなたが同意すると思います。

私の質問は、投稿の抜粋が実際にURLに追加される、Forrstと同様の手法をどのように使用できるかということです。これがどのように可能になるのか、私にはよくわかりません。PHPスクリプトは、特に同じタイトルのものが複数ある場合、データベースで何を検索する必要があるかをどのように判断できますか?

ありがとう!

ジャック

4

3 に答える 3

2

例のようなURLを取得するには、すでに行ったようにルーティングルールを追加する必要があります$route['posts/(:num)'] = "code/view/$1";。ForrstのURLは「マップされている」(またはそのようなもの)ようです。uriの最後の部分はo-mU8、dbに格納されている識別子(ハッシュのようですが、int idが好きです)だと思います。 、彼はURIをndashes(_)で分割し、コントローラーアクション内で次のようにその最後の部分を取得します。

$elements = explode('_',$this-uri-segment(2));
$identifier = $elements[count($elements)-1];

$results = $this->myModel->myQuery($identifier);

基本的に、コントローラー/と識別子の間の文字列はまったく役に立ちませんが、目標がより良いSEOである場合はそうではありません。

これがお役に立てば幸いです

于 2010-06-23T14:06:45.947 に答える
0

公式の議論を参照してください。これに関連することが多い用語は「スラッグ」です。CIフォーラムからのアプローチを自分でテストしたことはありませんが、提案と例はかなり良さそうです。

于 2010-06-23T11:38:24.440 に答える
0

codeigniterのURLヘルパーには、url_title()という関数呼び出しがあります。私自身は使ったことがありませんが、あなたが探しているものだと思います。

于 2010-07-01T21:29:11.637 に答える