web-dev-qa-db-ja.com

WordPressはパーマリンクをどのように扱いますか?

誤って入力された場合でも、WordPressは自動的にパーマリンク(URL)を修正します。例えばあなたがexample.com/some-postを入力したとしても、あるいはexample.com/idontexist/some-postを入力したとしても、WordPressはあなたをexample.com/someにあなたを導きます。

おそらく、WordPressはRegExのようなものか、右から左に比較するマッチングアルゴリズムを使用していて、一致するものが見つかると、左側に/.*/が残っていてもページに移動します。ただ推測! WordPressはどのようにこれを行いますか?

編集:私はまた.htaccessファイルが!f!dを使って仮想ファイル/ディレクトリをチェックし、ブログフォルダのindex.phpにリクエストをリダイレクトすることに気づきました。

11
Praveen Lobo

/wp-includes/canonical.phpのredirect_canonical関数は任意のURLで呼び出され、ユーザーが望んでいるURLを推測し、そのURLが存在しない場合はそこにリダイレクトしようとします。あらゆる種類の一般的なエラーに対してこれを実行するには、非常に膨大な量のコードが必要です。

6
Otto
3
kaiser

とても簡単です。 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' ) ) . '%' );
1
Pramod Jodhani