サポート » 使い方全般 » URLにページと無関係の数字が含まれていても404ページを表示しない

  • 解決済 headz_okada

    (@headz_okada)


    WordPress3.8.1(日本語版)を使用しております。

    404ページを作成した際に気になったのですが、
    URLにページと無関係の数字を含んでいた場合でも404ページを表示せず、
    ページの内容が表示されました。

    記事ページや固定ページでのみ起こるのですが、
    ページのURLが http://example.com/post-hoge/ だった場合、
    http://example.com/post-hoge/123456 などでもページが表示されます。
    また、アルファベットが1文字でも入ると404ページが表示されましたので、
    http://example.com/記事のスラッグ/数字 で起こるようです。

    パーマリンクの設定はカスタム構造で「/%category%/%postname%/」にしており、
    リダイレクト関連の設定は特に行なっておりません。

    同じ現象が起きるサイトも多数あるので問題無いのかもしれませんが、
    上記の場合でも404ページを表示するようにしたいと考えております。
    原因や解決方法のご教示をお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター jim912

    (@jim912)

    記事のパーマリンクの後に数字がつくのは、nextpage でページを分割して表示される場合に、利用されるURLのパターンになります。

    WordPressでnextpageタグをつかってページ分割する方法とその使いかた

    the_content タグは、ページ分割している以上の数値が与えられた場合でも、ページ分割された最後のページ(分割していない場合は1ページ目)を表示するようにしているので、WordPressとしては、想定通りの動作だと思われます。

    分割しているページ以上の数値が与えられた場合に404としたい場合、page.phpや、single.phpの一番最初に以下の記述をすることで対応できそうです。

    the_post();
    if ( $page > count( $pages ) ) {
    	status_header( 404 );
    	get_template_part( '404' );
    	exit;
    }
    rewind_posts();
    トピック投稿者 headz_okada

    (@headz_okada)

    jim912 様

    ご教示いただきありがとうございます。
    また、コードまで付けていただき大変恐縮です。

    >記事のパーマリンクの後に数字がつくのは、nextpage でページを分割して表示される場合に、利用されるURLのパターンになります。

    URLについた数字を、WPがページ分割時のページ数として解釈していたのですね。
    ページの内容が表示される理由がわかりスッキリいたしました。
    ありがとうございます。

    ちなみに、いただいたコードでは分割していないページで「/1」が入った場合は内容が表示されますが、こちらも404ページに飛ばず、または「/1」の無いURLにリダイレクトさせる方法はございますでしょうか?

    お手数をお掛けしますが、よろしくお願いいたします。

    モデレーター jim912

    (@jim912)

    「/1」が入った場合は、$page が 1 (入らない場合は0)になるので、その条件の場合は、get_permalink で取得したURLにリダイレクトするようになります。

    トピック投稿者 headz_okada

    (@headz_okada)

    jim912 様

    返信が遅くなってしまい申し訳ありません。
    ご返答ありがとうございます。

    いただいたコードを試したところ、
    「/1」が入った場合はリダイレクトされずにそのまま内容を表示したのですが、
    ご返答いただいた内容を元に「/1」でも404ページを表示することができました。

    jim912様のおかげで非常に勉強になりました。
    お力添えいただき、誠にありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「URLにページと無関係の数字が含まれていても404ページを表示しない」には新たに返信することはできません。