サポート » 使い方全般 » 存在しないURLでページが表示される

  • 解決済 ellcy

    (@ellcy)


    URLがhogehoge/?p=123という個別記事へhogehoge/?p=123/111やhogehoge/?p=123/aaaなど存在しないURLでアクセスしても、404エラーページではなく、hogehoge/?p=123と同様のページがそれぞれのURLで表示されてしまいます。

    hogehoge/?p=123aaaなどでは404になりなますが、hogehoge/?p=123/111/aaaなどでは存在しないURLでもアクセス可能です。

    正規のURLにスラッシュを足すことでスラッシュ以降どんな文字列でも同じ内容のページが表示されてしまうので正規のURL以外には404を返すようにしたいのですが方法が分かりません。

    この症状は個別記事と、固定ページのみ発生し、カテゴリーなどのアーカーイブページはhogehoge/?cat=1/111などでアクセスしても404が返ってきます。

    インストールした初期状態で、テーマはデフォルト、プラグインなしの状態です。
    解決策をご教示いただければ幸いです。

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

    (@hideokamoto)

    パーマリンクをデフォルトからそれ以外に変えてみましょうか。
    http://wpdocs.osdn.jp/%E7%AE%A1%E7%90%86%E7%94%BB%E9%9D%A2/%E3%83%91%E3%83%BC%E3%83%9E%E3%83%AA%E3%83%B3%E3%82%AF%E8%A8%AD%E5%AE%9A

    トピック投稿者 ellcy

    (@ellcy)

    Okamoto Hidetaka 様

    アドバイスありがとうございます。
    選択できるパーマリンクすべてで確認しましたが、どのパーマリンクの設定でも同様の症状でした。

    こんにちは。
    パーマリンクの沼は深いですね。

    WordPressはスラッシュで変数を別物と扱っていることがほとんどです。
    今どのような変数で動いているのかを確認したい場合は、
    テーマのファイルに以下を入れてみるとヒントがたくさん出てきますよ。

    <?php
    global $wp_query;
    echo '<pre>';
    var_dump($wp_query);
    echo '</pre>';
    ?>

    ページのIDは正常に渡されていて、あとはただ無視されているというだけの状態ではないかと思います。

    どのパーマリンクの設定でも同様とのことですが、

    hogehoge/123/?111
    hogehoge/123/?aaa=111

    などが有効になるのは、?以降がパラメーターとして動いているからですね。
    ユーザー側でも勝手に変えることができたりしますが、広告の出稿やアクセス解析などでも活用するものです。
    そもそもURLがバラバラになると困るという状況があまり見えない(404になるというものでもなさそうですし)ので、根本的な課題から検討してみてはいかがでしょうか。

    トピック投稿者 ellcy

    (@ellcy)

    Hijili Kosugi 様

    こんにちは。アドバイスありがとうございます。

    ただ、hogehoge/123の後に?を付けなくてもhogehoge/123/123でもアクセスできますし、hogehoge/aaaでもアクセスできてしまいます。
    しかし、hogehoge/123/の後が、数字とaaaやbbbなどの同じ文字列ならアクセス可能で、abcやabc123などの違う文字列や英数字が混ざると404になるようです。

    例えばこのページですと、“ja.wordpress.org/support/topic/存在しないurlでページが表示される/”のURLに“ja.wordpress.org/support/topic/存在しないurlでページが表示される/111”でアクセスしても正規の“ja.wordpress.org/support/topic/存在しないurlでページが表示される/”が表示されますので、私の環境でも存在しないURLの場合は正規のURLにリダイレクト、もしくは404を返すことはできないかとフォーラムへ投稿させていただいた次第です。

    教えていただいたコードを参考に少し勉強してみます。

    @ellcy

    hogehoge/123/123

    でアクセスできてしまうのは仕様です。
    というのは、WordPress のページ分割の機能がありますがそれによるものです。(<!-- nextpage --> でやるやつです。)

    hogehoge/123 がカスタム固定ページや投稿、カスタム投稿の個別ページへのアクセスの場合、
    hogehoge/123/123 はページ分割の123ページ目ということになります。

    もし、リダイレクトを行いたいのであれば、get_query_var( 'page' ) で値を取得出来るので、それが存在する & 1 で無い場合に リダイレクトをするというのは解決としてはありかなと思います。template_redirect 辺りのアクションで行うのが良いかもしれません。

    wp_head から出力される canonical は、ページ分割のものが排除されたもののはずなので、そこまで大きな問題では無い場合は気にしないというのもありなのかなと(サイトによるとは思います。)

    トピック投稿者 ellcy

    (@ellcy)

    Toro_Unit 様

    おはようございます。アドバイスありがとうございます。

    詳しい説明ありがとうございます。
    確かに、canonicalが正規のURLを指していますし、現状問題なさそうですのでこのまま様子を見たいと思います。

    コメント頂いた皆様、本当にありがとうざいました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「存在しないURLでページが表示される」には新たに返信することはできません。