AEMがApache書き換えルールを介して/robots.txtをリダイレクトできない
Apacheが/robots.txtをAEMの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 に設定すると、Dispatcherはmod_rewriteの後に処理されたURLを使用し、リダイレクトが期待どおりに機能するようになります。
解決策 resolution
この問題を解決するには:
- Apache Dispatcher設定ファイル(通常は
httpd-dispatcher.confという名前)を開きます。 DispatcherUseProcessedURLディレクティブを探します。- 値を0から1に変更します。
DispatcherUseProcessedURL 1
- ファイルを保存し、Apacheを再起動して変更を有効にします。
この変更により、Dispatcherでは、元のリクエスト (/robots.txt)ではなく書き換えられたURL (/content/dam/xxxx/robots.txt)が使用されるようになり、リダイレクトが期待どおりに機能するようになります。