誤って入力された場合でも、WordPressは自動的にパーマリンク(URL)を修正します。例えばあなたがexample.com/some-post
を入力したとしても、あるいはexample.com/idontexist/some-post
を入力したとしても、WordPressはあなたをexample.com/some
にあなたを導きます。
おそらく、WordPressはRegExのようなものか、右から左に比較するマッチングアルゴリズムを使用していて、一致するものが見つかると、左側に/.*/
が残っていてもページに移動します。ただ推測! WordPressはどのようにこれを行いますか?
編集:私はまた.htaccessファイルが!f
と!d
を使って仮想ファイル/ディレクトリをチェックし、ブログフォルダのindex.phpにリクエストをリダイレクトすることに気づきました。
/wp-includes/canonical.phpのredirect_canonical関数は任意のURLで呼び出され、ユーザーが望んでいるURLを推測し、そのURLが存在しない場合はそこにリダイレクトしようとします。あらゆる種類の一般的なエラーに対してこれを実行するには、非常に膨大な量のコードが必要です。
とても簡単です。 WordPressはSQLクエリでLIKE演算子を使用して、部分的なURLから完全なURLを推測します 404ページの場合
/wp-includes/canonical.php redirect_guess_404_permalink()
関数から取得したこのコードを確認してください。
$where = $wpdb->prepare( 'post_name LIKE %s', $wpdb->esc_like( get_query_var( 'name' ) ) . '%' );