Pathauto
設定可能なTokenパターンに基づいてコンテンツのURLエイリアスを自動生成し、手動でのエイリアス作成を不要にします。
pathauto
インストール
composer require 'drupal/pathauto:8.x-1.14'
composer require 'drupal/pathauto:8.x-1.13'
composer require 'drupal/pathauto:8.x-1.10'
概要
Pathautoは、さまざまな種類のコンテンツ(Node、Taxonomy Term、ユーザー)に対して、手動でパスを指定することなくURLエイリアスを自動生成するモジュールです。これにより、/node/123のような形式の代わりに、/category/my-article-titleのような検索エンジンに優しいURLを実現できます。
このモジュールは、管理者が設定可能なTokenに基づくパターンシステムを使用します。パターンはエンティティタイプごと、バンドルごと、そして多言語サイトでは言語ごとに作成できます。エイリアスの競合が発生した場合、モジュールは数値サフィックスを付加して自動的に一意性を確保します。
PathautoはDrupalのパスシステムとシームレスに統合されており、既存のエイリアスをそのまま維持する、古いエイリアスと並行して新しいエイリアスを作成する、またはコンテンツ更新時に古いエイリアスを置き換えるように設定できます。また、大量のコンテンツに対するエイリアスの一括生成・削除機能も提供しています。
Features
- Node、Taxonomy Term、ユーザー、その他のコンテンツエンティティに対して、設定可能なTokenパターンに基づくURLエイリアスの自動生成
- エンティティタイプ、バンドル、言語固有のパターンを重み付け優先度でサポートするパターンベースのエイリアス作成
- [node:title]、[term:vocabulary]、[user:name]のような動的エイリアスコンポーネントを可能にするToken置換システム
- エイリアスの競合発生時に数値サフィックス(-0、-1など)を付加する自動一意化機能
- 更新時の動作設定:何もしない、古いエイリアスを維持して新規作成、または古いエイリアスを置換
- エイリアスを持たない既存コンテンツに対するURLエイリアスの一括生成
- 手動作成エイリアスの保持オプション付きエイリアス一括削除
- アクセント文字をASCII相当に変換する音訳サポート
- 句読点の処理設定(削除、セパレーターに置換、またはそのまま維持)
- エイリアスから一般的な単語(a、an、theなど)を除去する除外語機能
- 長すぎるURLを防ぐためのエイリアス最大長およびコンポーネント長の設定
- URLやパスなど特定のTokenタイプのクリーニングを防ぐセーフToken設定
- エイリアス変更時にリダイレクトを作成するRedirectモジュールとの連携
- コマンドラインからのエイリアス生成・削除用Drushコマンド
- 自動エイリアス生成の手動オーバーライドを可能にするエンティティごとのPathautoチェックボックス
Use Cases
SEOに優しいコンテンツURL
タイトルに基づいてコンテンツの人間が読めるURLを作成します。記事に[node:title]のようなパターンを設定することで、/node/123ではなく/my-article-titleのようなURLを取得できます。これにより、URLにキーワードを含めてSEOを向上させ、リンクをより共有しやすく覚えやすくします。
階層的なTaxonomy URL
[term:vocabulary]/[term:parents:join-path]/[term:name]のようなパターンを使用して、Taxonomy階層を反映するURLを生成します。これにより、深くネストされた用語に対して/categories/electronics/smartphonesのようなURLが作成されます。
コンテンツタイプ固有のパターン
コンテンツタイプごとに異なるURLパターンを設定します。ブログ投稿はblog/[node:created:custom:Y/m]/[node:title]で日付ベースのURLを使用し、製品ページはproducts/[node:field_category]/[node:title]でカテゴリベースのURLを使用できます。
多言語サイトのURL管理
コンテンツの各言語バージョンに適切なエイリアスを生成する言語固有のパターンを作成します。ローカライズされたプレフィックスや翻訳されたTokenを使用するパターンを言語ごとに設定します。
ユーザープロフィールURL
ユーザーに対してPathautoを有効にして、クリーンなプロフィールURLを生成します。users/[user:name]やteam/[user:field_department]/[user:name]のようなパターンを使用して、整理された覚えやすいプロフィールページを作成します。
一括URL移行
別のCMSから移行したりURLを再構築したりする際、一括生成機能を使用してすべてのエイリアスを一度に再生成します。Redirectモジュールと組み合わせると、古いURLはリダイレクトとして保持されます。
レガシーエイリアスのクリーンアップ
一括削除機能を使用して、手動で作成したエイリアスを保持しながら古い自動生成エイリアスを削除し、新しいパターンで再生成して新鮮なURL構造を作成します。
Tips
- Pathautoと並行して常にRedirectモジュールをインストールし、エイリアス変更時に自動的にリダイレクトを作成してSEO価値を維持し、404エラーを防いでください。
- Tokenブラウザ(パターン編集時にリンクが表示されます)を使用して、エンティティタイプとそのフィールドで利用可能なTokenを確認してください。
- パターンの重みを戦略的に設定してください:より具体的なパターン(バンドル+言語)は、一般的なパターンより低い重み(高い優先度)を持つべきです。
- 新しいコンテンツに有効にする前に、一括更新機能で「エイリアスのないパスに対してのみ生成」を使用して既存のコンテンツでパターンをテストしてください。
- エイリアスを簡潔に保つために、「削除する文字列」に一般的な単語を追加してください(a、theなどの冠詞はデフォルトで含まれています)。
- 日付ベースのURLには、[node:created:custom:Y/m/d]のようなTokenフォーマットを使用して、/2024/03/15/article-titleのようなパスを取得してください。
- 「セーフToken」設定はURLのようなTokenのクリーニングを防ぎます。事前にフォーマットされたパスコンポーネントを出力するカスタムTokenがある場合は、カスタムToken名を追加してください。
- 本番サイトでの大規模なエイリアス操作には、UIよりもバッチ処理に効率的なDrushコマンド(pag、pad)を使用してください。
- 句読点設定を慎重に確認してテストしてください - サイトによってピリオドやアンダースコアなどの文字の処理方法が異なる場合があります。
Technical Details
Admin Pages 5
/admin/config/search/path/patterns
URLエイリアスパターンを管理します。このページには、設定されたすべてのPathautoパターンがタイプ、パターン文字列、有効状態とともに一覧表示されます。パターンは重みで並べ替えて優先度を制御できます(重みが低いパターンが先に評価されます)。
/admin/config/search/path/patterns/add
新しいURLエイリアスパターンを作成します。エンティティタイプ、Tokenパターン、オプションのバンドルと言語条件、管理用ラベルを定義します。
/admin/config/search/path/settings
セパレーター文字、エイリアス最大長、大文字小文字の処理、音訳、除外語、更新動作、句読点の処理などのグローバルPathauto設定を構成します。
/admin/config/search/path/update_bulk
既存のコンテンツに対してURLエイリアスを一括生成します。エンティティタイプを選択し、エイリアスのないパスのみに生成するか、既存のエイリアスを更新するか、すべてのエイリアスを再生成するかを選択します。
/admin/config/search/path/delete_bulk
URLエイリアスを一括削除します。すべてのエイリアスまたは特定のエンティティタイプのエイリアスを削除することを選択できます。手動で作成したエイリアスを保持するオプションがあります。
権限 4
Hooks 5
hook_pathauto_pattern_alter
エイリアスが生成される前に使用されるパターンを変更します。エンティティタイプ、バンドル、操作、言語などのコンテキストに基づいてパターンを修正できます。
hook_pathauto_alias_alter
生成されたエイリアスを保存する前に変更します。最終的なエイリアス文字列と言語などのコンテキスト値を修正できます。
hook_pathauto_is_alias_reserved
候補となるURLエイリアスが既存の予約済みパスと競合するかどうかを判定します。エイリアスの使用を防ぐにはTRUEを返します。
hook_pathauto_punctuation_chars_alter
Pathautoがエイリアス生成中に処理できる句読点文字のリストを変更します。
hook_path_alias_types_alter
エイリアスタイププラグインの定義を変更します。異なるエンティティタイプがエイリアス生成でどのように処理されるかを修正できます。
Drush Commands 2
drush pathauto:aliases-generate
URLエイリアスを一括で生成または再生成します
drush pathauto:aliases-delete
URLエイリアスを一括削除します
Troubleshooting 7
DrupalのURLおよびLink APIを通過したURLのみが置換されます。テンプレート内のhref="/node/123"のようなハードコードされたリンクは置換されません。Drupalのurl()関数またはリンクテンプレートを代わりに使用してください。
/admin/config/search/path/patternsで、そのコンテンツタイプ用のパターンが存在することを確認してください。デフォルトパターンが空白で、バンドル固有のパターンも存在しない場合、エイリアスは生成されません。パターンが有効になっていることを確認してください。
これは複数のアイテムが同じエイリアスを持つ場合に発生します。[node:nid]や[node:created:custom:Y-m-d]のような追加のTokenを含めて、類似したタイトルを区別してパターンをより一意にしてください。
/admin/config/search/path/settingsの句読点設定を確認してください。問題のある文字が「削除」または「セパレーターに置換」に設定されていることを確認してください。アクセント付き文字が問題の場合は音訳を有効にしてください。
「更新時の動作」設定を確認してください。「何もしない」に設定されている場合、既存のエイリアスは保持されます。自動更新するには「新しいエイリアスを作成し、古いエイリアスを削除する」に変更してください。
コンテンツがすでにエイリアスを持っており、「更新時の動作」が「何もしない」に設定されている場合、一括生成はそれらのアイテムをスキップします。一括生成で「すべてのパスのURLエイリアスを再生成」を選択するか、最初に更新時の動作設定を変更してください。
「エイリアス最大長」と「コンポーネント最大長」の設定を調整してください。デフォルトは100文字です。個々のTokenがコンポーネント長を超えないようにしてください。超えると単語境界で切り詰められます。
Security Notes 3
- 「Pathautoを管理」権限は強力であり、信頼された管理者にのみ付与すべきです。不正なパターンは内部パスを露出させたり、混乱するURL構造を作成する可能性があります。
- 一括削除操作は元に戻せず、確認ダイアログがありません。一括削除を実行する前に、必ずpath_aliasテーブルをバックアップしてください。
- ユーザー生成コンテンツTokenを含むパターンには注意してください。Tokenプロバイダーによって入力が適切にサニタイズされていない場合、悪意のあるユーザーがURL構造に影響を与える可能性があります。