AEMが、Apache 書き換えルールを使用して/robots.txtをリダイレクトできない
Apache がAEMで /robots.txt を DAM パスに書き換えるように設定されていても、リクエストが 404 を返す場合、Dispatcherによる URL の処理方法が原因である可能性があります。 この記事では、DispatcherUseProcessedURL 設定が書き換え動作に与える影響と、更新することでリダイレクト失敗を解決する方法について説明します。
説明 description
環境
Adobe Experience Manager(AEM)オンプレミス、v6.5
問題/症状
- 書き換えルールは、
/robots.txtを/content/dam/xxxx/robots.txtにリダイレクトするように設定されます。 アセットは存在し、直接アクセスできます。 - Dispatcherの許可ルールでは、
/robots.txtと/content/dam/xxxx/robots.txtの両方へのアクセスが許可されています。 ただし、/robots.txtにアクセスすると 404 エラーが返されます。
根本原因
Apache 設定には、次の書き換えルールが含まれています。
RewriteRule /robots.txt$ /content/dam/xxxx/robots.txt [ PT,L]
このルールは、/robots.txt のリクエストを DAM パスに正しく書き換えます。 ただし、Dispatcherは次のように設定されています。
DispatcherUseProcessedURL 0
この設定では、Dispatcherは書き換えられた URL を無視し、代わりに元のリクエスト URI を使用します。 その結果、書き換えられたパスが認識されず、404 エラーが返されます。
Dispatcherのインストール ドキュメントによると、DispatcherUseProcessedURL を 1 に設定すると mod_rewrite 後にDispatcherで処理された URL が使用され、リダイレクトが期待どおりに機能します。
解決策 resolution
この問題を解決するには:
- Apache Dispatcher設定ファイル(通常は
httpd-dispatcher.conf)を開きます。 DispatcherUseProcessedURLディレクティブを見つけます。- 値を 0 から 1 に変更します。
DispatcherUseProcessedURL 1
- ファイルを保存し、Apache を再起動して変更を有効にします。
この変更により、Dispatcherで元のリクエスト(/robots.txt)ではなく、書き換えられた URL (/content/dam/xxxx/robots.txt)が使用され、リダイレクトが期待どおりに動作するようになります。