概要
redirect_canonical
フィルタは、リクエストURLをサイトの基本ルールと比較してリダイレクトするために使用されます。このフィルタを利用することで、重複コンテンツの管理やSEOに適したリダイレクトを実装できます。以下のような機能を実装する際によく使われます。
- トレーリングスラッシュの追加
- wwwあり・なしのリダイレクト
- HTTPからHTTPSへのリダイレクト
- カスタムURLのリダイレクト
- 特定のページや投稿のリダイレクト
- 記事の更新に伴う古いURLからのリダイレクト
- 不正確なURLの修正
- リダイレクトループの防止
このフィルタは、WordPressのコアファイル wp-includes/canonical.php
に含まれています。
構文
add_filter('redirect_canonical', 'your_custom_redirect_function', 10, 2);
パラメータ
$redirect_url
(string): リダイレクト先のURL。$requested_url
(string): 元のリクエストURL。
戻り値
- 変更されたリダイレクトURL。
関連する関数
使用可能なバージョン
このフィルタは、WordPress 2.7 以降で使用可能です。
含まれるコアファイルのパス
wp-includes/canonical.php
この関数のアクションでの使用可能性
アクション | 使用可能 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | 〇 |
register_sidebar | |
wp_loaded | 〇 |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | 〇 |
get_header | |
wp_head |
サンプルコード
サンプルコード1: トレーリングスラッシュを追加する
add_filter('redirect_canonical', 'add_trailing_slash');
function add_trailing_slash($redirect_url) {
if (!preg_match('//$/', $redirect_url)) {
return trailingslashit($redirect_url);
}
return $redirect_url;
}
このサンプルコードは、URLにトレーリングスラッシュがない場合、スラッシュを追加するリダイレクトを実装しています。
サンプルコード2: wwwあり・なしでリダイレクト
add_filter('redirect_canonical', 'redirect_www');
function redirect_www($redirect_url) {
if (!preg_match('/^https?://www./', $redirect_url)) {
return preg_replace('/^https?:///', 'http://www.', $redirect_url);
}
return $redirect_url;
}
このサンプルコードは、wwwなしのURLにアクセスした際にwwwありのURLへのリダイレクトを実装しています。
サンプルコード3: HTTPからHTTPSへリダイレクト
add_filter('redirect_canonical', 'redirect_http_to_https');
function redirect_http_to_https($redirect_url) {
if (is_ssl()) {
return $redirect_url;
}
return preg_replace('/^http:/', 'https:', $redirect_url);
}
このサンプルコードは、HTTPでのアクセスをHTTPSにリダイレクトする機能を実装しています。
サンプルコード4: 特定のカスタムURLをリダイレクト
add_filter('redirect_canonical', 'redirect_custom_url');
function redirect_custom_url($redirect_url){
if (strpos($_SERVER['REQUEST_URI'], 'old-page') !== false) {
return home_url('/new-page');
}
return $redirect_url;
}
このサンプルコードは、「old-page」でのアクセスを「new-page」にリダイレクトする機能を実装しています。
サンプルコード5: 不正確なURLを修正
add_filter('redirect_canonical', 'fix_incorrect_url');
function fix_incorrect_url($redirect_url) {
if ($_SERVER['REQUEST_URI'] == '/incorrect-url') {
return home_url('/correct-url');
}
return $redirect_url;
}
このサンプルコードは、不正確なURLへのアクセスを正しいURLにリダイレクトする機能を実装しています。