web-dev-qa-db-ja.com

正規のURLシステム全体ではなく、URLの自動補完のみを無効にする

私はこのように構造化された/命名されたいくつかのカテゴリ「プロジェクト」の中にいくつかのページがあるブログを持っています:

  • / projects/project-2012
  • / projects/project-2013
  • / projects/project-2014
  • / projects/project-2015

ユーザーがhttp://myblog.com/projectまたはhttp://myblog.com/projeのようなURLを入力した場合彼/彼女はページ /projects/project-2012 にリダイレクトされます。 (301が永久に移動した場合)

WordpressにURLを1つの明確に定義されたページ(例:http://myblog.com/?p=123)に変換する一方で、無効にしたい複数のページを指す可能性がある「不明な」URLのURL自動補完のみ。

私の質問は:どうすればこれを達成できますか?


私はまた調査をした….

  • 質問{ WordpressのURLの自動補完を無効にする に対する一般的な回答は、正規のURLシステム全体を無効にします。これは私には受け入れられません。

  • 約4年前、このようなものがWordpressのバグトラッカーに表示されました: https://core.trac.wordpress.org/ticket/8948 あなたのURLしかし、あなたは次のページのどれかを探していたのでしょうか? ")そこで議論されました、チケットは最後に閉じられました。

  • EDIT:https://core.trac.wordpress.org/ticket/16557 には実際に新しいチケットがあります。これは4.0リリースをターゲットにしているようです。また、チケットのコメントにも解決策が含まれています(下記参照)。

8
Hauke P.

さて、もう少し検索した後、私はついにこの機能要求チケットのコメントに隠された私自身の質問に対する答えを見つけました: https://core.trac.wordpress.org/ticket/16557 ユーザーnacinはそれを提案このコードを使用してください:

function remove_redirect_guess_404_permalink( $redirect_url ) {
    if ( is_404() )
        return false;
    return $redirect_url;
}

add_filter( 'redirect_canonical', 'remove_redirect_guess_404_permalink' );

これを新しいプラグインphpファイル(たとえば、wp-content/plugins/disable-url-autocorrect-guessing.php)に追加すると、Wordpressの自動修正「推測」機能を無効にすることができるNiceプラグインができます。 。

私が実際にこれをして、Wordpress.orgで私のプラグインを手渡した悩みをあなたに救うために。それがそこに見直されれば、それをここにダウンロードすることができるはずです: https://wordpress.org/plugins/disable-url-autocorrect-guessing/


これは実用的な解決策ですが、推奨されるコードは多少のハックです。 https://core.trac.wordpress.org/ticket/16557 にある機能要求が実際に実装されると、これに対するより良い解決策、および実際に推測を実行する方法をより適切に制御できるようになります。 。

10
Hauke P.

残念ながら redirect_canonical() は400行以上のコードで構成され(リリースごとに大きくなっていきます)、特に目的に応じて制御するようには構成されていません。柔軟に設定することはできません。

実用的な観点からあなたの最良の選択肢は以下のとおりです。

  1. 手動でリダイレクトを処理する(template_redirect)。
  2. 思いついたターゲットがredirect_canonicalフックとしてリダイレクトされないようにするのは望ましくありません。

どちらの場合でも、 のロジックを開発する必要があります。正確に は望ましくないリダイレクトになります。

0
Rarst