3

view_articlesというメソッドを持つarticlesというコントローラーがある場合、ユーザーはhttp://example.com/articles/view_articles/some-postと入力して、ページを返すようにできます。

ルートをhttp://example.com/article/post-nameに指定しました。ルートで指定されたURLのみが表示されるようにするにはどうすればよいですか?記事/view_articles/ some-postがルートURLと同じページを表示する代わりに404を表示する方法はありますか?

私はSEOの目的で重複を防ごうとしています。

4

3 に答える 3

3

routes.phpファイルでルートを正しく定義することにより、404ページへのデフォルトのルーティングをいつでも作成できます。

$routes['article/(:any)'] = 'articles/view_articles/$1';

$routes['(:any)'] = 'main/e404';

CodeIgniterユーザーガイドで述べられているように:

ルートは、定義された順序で実行されます。高いルートは常に低いルートよりも優先されます。

したがって、基本的に、ファイルの先頭に表示したいものをすべて定義し、最後の行で他のすべてをブロックすることができます。

メイン(他のどのコントローラーでもかまいません)コントローラーの404メソッドについて-

function e404() {
    show_404();
}
于 2012-09-27T17:20:40.787 に答える
2

URIに2番目のセグメントが含まれている場合は、内部のURIクラス$this->uri->segment(n)の一部として使用して、トラフィックをルートにリダイレクトします。view_articlesview_articles

于 2012-09-27T17:48:36.620 に答える
0

私は他のトリッキーな方法でそれを行いました。まず、sys / core / Controller.phpの__construct関数にコードを追加する必要があります。このコードによって、要求されたURLがルートにあるかどうかを確認できます。

if(!isset($this->router->routes[uri_string()])){
    show_404(); // Or whatever you want ...
}
于 2013-07-25T23:33:43.343 に答える