Dispatcherのバニティ URL | AEM
このドキュメントでは、Adobe Experience Managerでのバニティ URLの処理方法と、書き換えルールを使用してコンテンツを配信エッジに近づけるなどの追加手法について説明します。
説明 description
環境
Adobe Experience Manager
問題/症状
AEMはバニティ URLをどのように扱いますか? コンテンツを配信エッジに近づけるための追加の手法はありますか?
バニティ URLとは
フォルダー構造に属するコンテンツがある場合、それが参照しやすいURLにあるとは限りません。 バニティ URLはショートカットに似ています。 実際のコンテンツが存在する場所を参照する短いURLまたは一意のURL。
例:/aboutusは/content/we-retail/us/en/about-us.htmlを指しています
AEMの作成者は、AEMのコンテンツにバニティ URL プロパティを設定して公開することができます。
この機能が機能するには、バニティを許可するようにDispatcher フィルターを調整する必要があります。 これは、作成者がこれらのバニティページエントリを設定する必要がある割合でDispatcher設定ファイルを調整する場合には不合理になります。
このため、Dispatcher モジュールには、コンテンツツリーにバニティとしてリストされているすべてのものを自動的に許可する機能があります。
解決策 resolution
仕組み
バニティ URLのオーサリング
作成者はAEMのページにアクセスし、ページプロパティにアクセスして、バニティ URL セクションにエントリを追加します。
変更を保存してページをアクティベートすると、バニティがこのページに割り当てられます。
タッチ UI:
Classic Content Finder:
注:これは名前空間の問題に対して非常に脆弱であることを理解してください。 バニティエントリは、すべてのページに対してグローバルです。これは、回避策を計画する必要がある欠点の1つに過ぎません。 後でもいくつか説明します。
リソース解決/ マッピング :
各バニティエントリは、内部リダイレクトのSling マップエントリです。 これらのマップは、AEM インスタンス Felix コンソール (/system/console/jcrresolver)で表示されます
バニティエントリによって作成されたマップエントリのスクリーンショットを次に示します。
上記の例では、AEM インスタンスに/aboutusへのアクセスを依頼すると、/content/we-retail/us/en/about-us.htmlに解決されます
Dispatcherの自動許可フィルター:
セキュアなステートのDispatcherは、JCR ツリーのルートであるため、Dispatcher経由のパスでリクエストをフィルタリングします。
パブリッシャーが、/contentやその他の安全なパスなどのコンテンツのみを許可し、/systemなどのパスを許可しないようにすることが重要です。
これは、のベースフォルダーにあるラブ、バニティ URLです。安全を維持しながらパブリッシャーにアクセスするにはどうすればよいですか?
Simple Dispatcherには自動フィルター許可メカニズムがあり、AEM パッケージをインストールしてから、そのパッケージページを指すようにDispatcherを設定する必要があります。 AEM パッケージについては、ここにアクセスしてください。
Dispatcherのファームファイルには、次の設定セクションがあります。
/vanity_urls { /url "/libs/granite/dispatcher/content/vanityUrls.html"
/file "/tmp/vanity_urls" /delay 300 }
この設定では、Dispatcherに対して、AEM インスタンスからこのURLを取得するよう指示します。このURLは、300秒ごとにフロント処理され、許可する項目のリストを取得します。
この例では、/file引数に応答のキャッシュを格納します。したがって、この例では/tmp/vanity_urls
そのため、URIのAEM インスタンスにアクセスすると、取得するものが表示されます。
とてもシンプルなリストです。
ルールをバニティルールとして書き換える
上記のように、AEMに組み込まれたデフォルトメカニズムの代わりに書き換えルールを使用することについて触れるのはなぜですか?
簡単に説明すると、名前空間の問題、パフォーマンス、より適切に処理できる上位レベルのロジックです。
Apacheのmod_rewrite モジュールを使用して、バニティエントリ /aboutusのコンテンツ /content/we-retail/us/en/about-us.htmlへの例を説明します。
RewriteRule /aboutus /content/we-retail/us/en/about-us.html PT,L,NC
このルールは、バニティ /aboutusを検索し、PT フラグ(パススルー)を使用してレンダラーから完全なパスを取得します。
また、他のすべてのルール L フラグ(最後)の処理も停止します。つまり、JCR Resolvingのように膨大なルールのリストをトラバースする必要はありません。
リクエストをプロキシし、AEM パブリッシャーがこの2つの要素に応答するのを待つ必要がないので、パフォーマンスが大幅に向上します。
次に、このケーキの上のアイシングはNC フラグ(大文字と小文字を区別しない)です。つまり、/aboutusではなく/AboutusでURLを取得しても機能し、適切なページを取得できます。
書き換えルールを作成するには、Dispatcherに設定ファイル(例:/etc/httpd/conf.d/rewrites/examplevanity_rewrite.rules)を作成し、これらのバニティ URLを適用する必要があるドメインを処理する.vhost ファイルに含めます。
次に、include insideのコードスニペットの例を示します。
/etc/httpd/conf.d/enabled_vhosts/we-retail.vhost
VirtualHost *:80 ServerName weretail.com ServerAlias
www.weretail.com ........ SNIP ........ IfModule mod_rewrite.c
ReWriteEngine on LogLevel warn rewrite:info
Include /etc/httpd/conf.d/rewrites/examplevanity_rewrite.rules / IfModule
........ SNIP ......../VirtualHost
どのような方法で、どこで使うのか?
A. AEMを使用してバニティエントリを制御すると、次のメリットが得られます。
- コンテンツ作成者は、その場でコンテンツを作成できます
- コンテンツと一緒に生活し、コンテンツにパッケージ化することができます
B. mod_rewriteを使用してバニティエントリを制御するには、次の利点があります。
- コンテンツ解決の迅速化
- コンテンツリクエストのエッジに近い位置にあります
- 他の条件でのコンテンツのマッピング方法を制御するための、より拡張性とオプション
- 大文字と小文字を区別しない場合があります
C.両方の方法を使用しますが、次の場合に使用するアドバイスと基準は次のとおりです。
- バニティが一時的で、トラフィックレベルが低い場合は、AEMの組み込み機能を使用します
- バニティが頻繁に変更されず、頻繁に使用される主要なエンドポイントである場合は、
mod_rewriteルールを使用します。 - バニティ名前空間(例:
/aboutus)を同じAEM インスタンス上の多くのブランドで再利用する必要がある場合は、書き換えルールを使用します。
注意: AEMのバニティ機能を使用し、名前空間を使用しない場合は、命名規則を作成できます。 /brand1/aboutus, brand2/aboutus, brand3/aboutusのようにネストされたバニティ URLを使用しています