AEM ドメインおよびプロトコル設定から正しくない正規URLまたは重複するサイトマップ URLを解決する

ページプロパティ、Externalizer、リクエストヘッダー、テンプレートロジックが正しく設定されていない場合、AEMで生成された正規タグとサイトマップ URLに、間違ったドメイン、間違ったプロトコル、相対パス、重複した正規タグが表示される。 最も一般的な原因は、Externalizer ドメイン設定が見つからない、ヘッダーが見つからない、X-Forwarded-Proto ヘッダー、Dispatcher clientheaders ルールが不適切、または2つ目の正規タグを発行するテンプレートロジックです。 ページプロパティとExternalizerの設定を修正し、プロトコルヘッダーがAEMに達することを確認し、重複したテンプレートロジックを削除すると、正しい正規URLとサイトマップ URLが復元されます。

説明 description

問題:AEMが誤ったURL、重複したURL、または相対する正規URLとサイトマップ URLを生成する

説明

AEM内のサイトで、規範的なURL (httpsではなくhttp)が正しく表示されない、相対URLまたは完全なURLが見つからない、または絶対URLではなく相対URLを含むサイトマップが生成される。 場合によっては、カスタム実装が既にタグを生成し、重複が生じている場合に、AEMがデフォルトの正規タグを挿入する場合があります。 不適切な設定のページプロパティ、Externalizer ドメイン設定の欠落、X-Forwarded-Proto ヘッダーの欠落、不適切なDispatcher clientheaders ルール、正規化されたタグを自動的に生成するテンプレートレベルのロジックなど、これらの現象をすべてトリガーにします。

環境:

  • Adobe Experience Manager as a Cloud Service (AEMaaCS)
  • AEM Managed Services
  • AEM 6.5 オンプレミス
  • DispatcherとCDN/ロードバランサーの階層

問題/症状:

  • 正規URLはhttps://ではなくhttp://として表示されます
  • サイトマップには、絶対URLではなくスラグまたは相対URLのみが含まれます
  • 重複する規範的なタグがページソースに表示される
  • AEMで自動生成された正規タグには、完全なURLではなく相対パスのみが表示されます

根本原因:

AEMは、ページプロパティ、Externalizer設定、リクエストヘッダー(特にX-Forwarded-Proto)、リソースリゾルバーマッピング、テンプレート固有のロジックの組み合わせから、正規URLとサイトマップ URLを判断します。 これらのいずれかが見つからないか、設定が正しくないか、オーバーライドされている場合、AEMは不正なURL、重複したURL、または相対URLを出力します。 サイトマップの動作の中には、Apache Sling サイトマップモジュールの制限もあります。

確認方法

  1. 観察された症状を1つのカテゴリに一致させます。重複した正規タグ、間違ったプロトコル (http)、見つからないドメイン、または相対URLを生成するサイトマップです。
  2. ページソースを調べ、正規のタグが何個あり、それぞれが正しいプロトコルとドメインを使用しているかどうかを確認します。
  3. ブラウザーで<site>.sitemap-index.xmlを取得し、エントリが絶対URLか相対URLかを確認します。

解決策 resolution

  1. 重複する正規タグまたは正しくない正規タグを修正します。 ページのプロパティ >詳細を開き、正規URL フィールドを見つけます。このフィールドは、自動正規の生成を制御します。 必要に応じて値をクリアまたは更新し、ページソースを再読み込みして、残りの正規タグを1つだけ確認します。 自動生成されたタグが引き続き表示される場合は、2番目の正規タグを追加するテンプレートロジックについてカスタム headerlibsまたはhead.htmlを確認し、重複ロジックを削除または無効にします。

  2. 間違ったプロトコルを使用する正規のURLを修正します。 CDNまたはロードバランサーがヘッダーを送信することを確認します。

    code language-none
    X-Forwarded-Proto: https
    

ブラウザーの開発ツールまたはcurlを使用して、受信リクエストヘッダーを調べ、ヘッダーが存在することを確認します。 環境にない場合は、CDNまたはロードバランサールールを更新します。
​3. AEMaaCSの場合は、次のフィールド値を使用して、org.apache.felix.http.sslfilter.SslFilterのCloud Managerを介してデプロイされたOSGi設定を確認します。

  • enable = true
  • forwarded = true
  • forwarded.header = X-Forwarded-Proto
  • forwarded.value = https

デプロイメント後、ページソースを表示して、正規生成でhttpsが使用されていることを確認します。
​4. サイトマップ内の相対URLまたは見つからないドメインを修正します。 sitemap-index.xml エントリが使用されていることを確認します。絶対URLは、多くの場合、sitemap-index.xmlにのみ表示され、子sitemap.xml ファイルには表示されません。 次に、com.day.cq.commons.impl.ExternalizerImpl-publish設定を使用して、Externalizer ドメイン設定がコードを介してデプロイされていることを確認します。 externalizer.externalLinkまたはexternalizer.publishLinkを使用して単純なテストリンクを追加し、Externalizerが絶対URLを生成することを確認します。
​5. AEMのすぐに利用できる機能を使用して、サイトマップを生成できます。 サイトマップを生成がページごとに正しく有効または無効になっていることを確認してください。 サイトマップルートとしてマークされたページの場合、AEMはsitemap.xmlsitemap-index.xmlを生成します。 /content/<path>.sitemap-index.xmlまたは/content/<path>.sitemap.xmlに直接アクセスして、想定されるXMLが生成されていることを確認します。 URLが何も返さない場合は、ページが公開されていることを確認します。 Edge Delivery Services(EDS)サイトマップを使用する場合は、lastmodchangefreqはサポートされていません。これは厳しい制限なので、EDS サイトマップをカスタマイズしないでください。
​6. AEMaaCS上のMSM サイトまたは多言語サイトの場合は、組み込みのSling サイトマップとページレベル sling:sitemapRootを使用します。 ACS Commons サイトマップジェネレーターはサポートされていません。 sling:sitemapRoot = true​が各言語ルートに存在することを確認し、<langroot>.sitemap-index.xmlにアクセスして、各言語ルートが独自のサイトマップを生成することを確認します。

検証

  1. ページソースを開き、正規タグが1つだけ存在し、プロトコルが正しく、ドメインが想定される設定と一致することを確認します。
  2. sitemap-index.xmlsitemap.xmlを開き、Apache Sling Sitemapの制限で想定されない限り、相対スラグなしで、サポートされている場所に絶対URLが表示されることを確認します。
  3. デプロイメント後にDispatcher、CDN、またはOSGi設定の変更を反映することを確認します。 AEMaaCSは、デプロイ時にこれらを自動的に適用します。

関連トピックス

recommendation-more-help
experience-cloud-kcs-help-kbarticles