Redirect
統一されたリダイレクトAPIを提供し、古いURLから新しいURLへのリダイレクトを可能にします。URLエイリアスが変更された際の自動リダイレクト作成機能も含まれています。
redirect
インストール
composer require 'drupal/redirect:8.x-1.12'
composer require 'drupal/redirect:8.x-1.11'
概要
Redirectモジュールは、DrupalサイトのためのURLリダイレクトソリューションを提供します。サイト管理者が古いURLから新しいURLへのリダイレクトを作成・管理でき、コンテンツの移動やURL変更時のSEO価値とユーザー体験を維持するのに役立ちます。
このモジュールは、以前path_redirectやglobalredirectモジュールが提供していた機能を統合・置き換える統一リダイレクトAPIを提供します。受信リクエストをインターセプトし、設定されたリダイレクトルールに基づいて訪問者を正しい宛先に自動的にリダイレクトします。
主な機能には、様々なHTTPリダイレクトステータスコード(301、302、303など)のサポート、URLエイリアス変更時の自動リダイレクト作成、クエリ文字列のパススルー、言語別リダイレクト、コンテンツフォームから直接リダイレクトを表示・管理できるノード編集インターフェースとの統合が含まれます。
また、エイリアスが存在する場合はエイリアスにリダイレクトし、末尾のスラッシュを削除し、適切な言語プレフィックスを確保することで、クリーンで正規化されたURLを強制するルート正規化機能も含まれています。
Features
- 古いパスから新しい宛先へのURLリダイレクトを様々なHTTPステータスコード(300-307)で作成・管理
- URLエイリアス変更時に自動的にリダイレクトを作成し、SEO価値を保持
- グローバルリダイレクトより優先される言語別リダイレクトのサポート
- リダイレクト時にURLパラメータを保持するクエリ文字列パススルー
- サイト全体でクリーンで正規化されたURLを強制するルート正規化
- コンテンツへの既存リダイレクトを表示するノード編集フォームとの統合
- フィルタリングと一括操作が可能なViewsベースの管理インターフェース
- リダイレクトループの検出・防止とログ記録
- 削除せずに個別のリダイレクトを有効化/無効化
- 複雑なリダイレクトシナリオのためのチェーンリダイレクト解決
- 多数のリダイレクトがあるサイトでのパフォーマンス向上のためのパスプレフィックスキャッシング
- Drupal 6および7のpath_redirectデータからの移行サポート
Use Cases
URL構造変更を伴うサイト移行
新しいURL構造にコンテンツを移行する際、古いパスから新しい場所への301リダイレクトを作成します。モジュールは検索エンジンのランキングが保持され、古いリンクをたどるユーザーが正しいコンテンツに到達することを保証します。
コンテンツの統合
複数のページを1つに統合する際、削除されたページから統合されたページへのリダイレクトを作成します。これによりリンクエクイティが維持され、404エラーが防止されます。
よくあるタイプミスの修正
よくタイプミスされるURL(例:/contctから/contact)へのリダイレクトを作成し、重複コンテンツを作成せずにユーザー体験を向上させます。
ドメインの統合
Redirect Domainサブモジュールを使用して、古いドメイン(old-site.com)から新しいドメイン(new-site.com)へトラフィックをリダイレクトし、パス構造を保持します。
壊れたリンクの追跡と修正
Redirect 404サブモジュールを有効にして404エラーを自動的にログに記録します。「404ページを修正」レポートを確認して、頻繁にリクエストされる存在しないページを特定し、適切なリダイレクトを作成します。
URLエイリアスの変更
自動リダイレクト作成を有効にすることで、コンテンツのURLエイリアスが更新された際に、古いエイリアスから新しいエイリアスへのリダイレクトが自動的に作成されます。
バニティURLとマーケティングキャンペーン
マーケティングキャンペーン用の短くて覚えやすいリダイレクトを作成します(例:/saleから/products/summer-sale-2024)。印刷物や口頭でのコミュニケーションで簡単に共有できます。
Tips
- 恒久的なURL変更にはSEO価値を保持するために301(Moved Permanently)を使用し、一時的なリダイレクトには302(Found)を使用してください
- Redirect 404サブモジュールを有効にして、サイト上の壊れたリンクを積極的に特定して修正してください
- 言語別リダイレクトは常に「すべての言語」のリダイレクトより優先されます - 多言語サイトで便利です
- ノード編集フォームの「URLリダイレクト」タブは、コンテンツ編集ワークフローを離れることなくリダイレクトを管理するクイックアクセスを提供します
- drushを使用する場合、設定管理ワークフローの一部としてリダイレクトをエクスポート/インポートできます
- ルート正規化設定を確認して、サイトのURL構造要件に一致していることを確認してください
- 高トラフィックサイトでは、settings.phpのredirect_prefix_list_max設定(デフォルト100)の調整を検討してください
Technical Details
Admin Pages 4
/admin/config/search/redirect
すべてのURLリダイレクトの表示、フィルタリング、管理を行うメイン管理ページ。ソースパス、宛先、有効状態、ステータスコード、言語、作成日、操作を含むテーブルを表示します。Views Bulk Operationsによる一括削除操作をサポートします。
/admin/config/search/redirect/add
新しいURLリダイレクトを作成するフォーム。ソースパス、宛先URL、リダイレクトステータスコード、言語設定を指定できます。
/admin/config/search/redirect/edit/{redirect}
追加フォームと同じフィールドで既存のリダイレクトを編集するフォーム。
/admin/config/search/redirect/settings
自動リダイレクト作成、クエリ文字列の処理、ルート正規化設定を含むRedirectモジュールのグローバル設定オプション。
権限 2
Hooks 6
hook_redirect_response_alter
リダイレクトレスポンスがユーザーに配信される前に変更します。ヘッダー、ステータスコードを変更したり、宛先URLを変更することもできます。
hook_redirect_presave
リダイレクトが保存される前に処理を行う
hook_redirect_insert
リダイレクトが作成された後に処理を行う
hook_redirect_update
リダイレクトが更新された後に処理を行う
hook_redirect_delete
リダイレクトが削除された後に処理を行う
hook_redirect_load
リダイレクトが読み込まれた後に処理を行う
Troubleshooting 6
A→B→Aのような循環リダイレクトをチェックしてください。モジュールはこれらをwatchdogに記録します。リダイレクトを確認してループチェーンを断ち切ってください。
設定で「管理パスでのリダイレクトを無視」が有効になっているか確認してください。これはロックアウトを防ぐための意図的な動作です。
設定で「リダイレクト時にクエリ文字列を保持」が有効になっていることを確認してください。リダイレクト先に定義されたクエリパラメータが優先されることに注意してください。
設定で「URLエイリアス変更時に自動的にリダイレクトを作成」が有効になっているか確認してください。Pathモジュールも有効である必要があります。
パスが「無視するページ」設定のパターンに一致していないか確認してください。また、redirect_404サブモジュールが有効になっているか確認してください。
モジュールは検索を最適化するためにプレフィックスキャッシングを使用します。キャッシュが適切に動作していることを確認してください。settings.phpのredirect_use_prefix_list設定を検討してください。
Security Notes 4
- 保護されたコンテンツがある場合は、「リダイレクト先ページへのアクセス権をチェック」設定を有効にして、リダイレクトプロービングによるURL発見を防いでください
- 外部URLへのリダイレクトを作成する際は注意してください - 宛先が正当であることを確認してください
- モジュールはリダイレクトの作成/編集に「administer redirects」権限、グローバル設定の変更に「administer redirect settings」権限を要求します
- リダイレクトソースはフロントページからのリダイレクト作成を防ぐために検証されます。これはサイトロックアウトを引き起こす可能性があるためです