3

/etc/map.publish の下の sling:Mapping ノードで定義されたSling マッピングを選択的に適用したいのですが、希望する動作が得られません。

基本的に、ホスト ヘッダーがリクエストと一致する場合にのみマッピング ルールがトリガーされるようにしたいと考えています。

現在、/etc/map.publish の下の sling:Mapping ノードを使用して、リソース パスを応答の短い URL にマップしています。

その下/etc/map.publish/http/myappに、次のノードがあります。

<jcr:root ...>
    jcr:primaryType="sling:Mapping"
    sling:internalRedirect="/content/company/app/en"
    sling:match="app.company.com
</jcr:root>

私が望むのは、ユーザーが要求したときです:

http://app.company.com/content/company/app/en/page.html

応答の URL (マップされている場合) は、次の形式で返されます。

http://app.company.com/page.html

インバウンド URL とアウトバウンド URL がこのように異なる理由は、Apache がさまざまなデバイス タイプの URL を書き換えているためです。

ただし、次のような別のホスト ヘッダーを持つ要求が到着した場合:

http://localhost:4502/content/company/app/en/page.html

そのルールに従って URL をマップしたくありません。現在、それはにマッピングされています

http://app.company.com/page.html

ホスト/ポートを考慮して、マッピングがリソースを厳密に解決しているようです。次に、出力中に URL をマッピングするときに、「最適な一致」が検出されて使用されます。可能であれば、 map() が resolve() のように動作することを望みます。

4

2 に答える 2

1

に基づく 2 つのメカニズムがあります/etc/map

  1. URL リゾルバを使用して、URLをコンテンツ パスresolver.resolve()などに変換します。http://app.company.com/page.html/content/company/app/en/page.html
  2. resolver.map()コンテンツを変換し、すべてのリンクを 、 などのフォームから完全な URL に短縮するメソッドを使用/content/company/app/en/page.htmlしたリンク リライター。適切なプロパティに正規表現がない場合にのみ機能します。<a><img>sling:match

ドメイン名を使用してコンテンツをマップ/解決できます。マルチドメイン環境を作成するため、http://app.company.com/page.htmlあるリソースhttp://app.company2.com/page.htmlにヒットし、別のリソースにヒットします。

ただし、現在の要求ホストによっては、リンク リライターを無効または有効にすることはできません。例えば。上記のようにマッピングを構成すると、リクエストに含まれるホスト ヘッダーに関係なく、/content/company/app/en/page.htmlコンテンツ パスは常に に短縮さhttp://app.company.com/page.htmlれます。

于 2013-09-17T12:41:11.710 に答える