パターンリダイレクトの使用
7.4 U48+/GA48+で利用可能
パターンリダイレクトは、正規表現を使用して、複数のソースURLとその置換のパターンを定義します。 そのため、新しいURLにマッピングするURLのグループが多い場合に最適である。 NginxやApacheのようなウェブサーバーで一括リダイレクトを作成できますが、これはすぐに使える機能なので、Liferayで直接パターンリダイレクトを設定できます。
Liferayは現在のサイトのフレンドリーURLに基づいてリダイレクトパターンをフレンドリーURLとして解釈するため、非フレンドリーURL(バーチャルホスト名やポート番号など)を使ったリダイレクトパターンを使ったり、現在のサイトの範囲外のページにリダイレクトしたり(サイトAのページAからサイトBのページBにリダイレクトするなど)することはできません。
ただし、アドレスの前にプロトコルを追加することで、外部のウェブサイトにリダイレクトすることができます。 (例えば、http://www.externalwebsite.com を使って外部ウェブサイトにリダイレクトする)。
使用する正規表現によっては、パターンリダイレクトは エイリアスリダイレクト よりも遅く、意図したよりも多くのURL一致が発生する可能性があります。 これらの理由から、可能な限りエイリアスリダイレクトを推奨します。 詳しくは、リダイレクトと404追跡の設定 をご覧ください。
パターンリダイレクトの作成
-
サイトメニュー( ) を開き、 コンフィギュレーション → リダイレクト に進む。
-
[Patterns] タブに移動します。
-
[Pattern]フィールドに、ソースURLの正規表現を入力します。 各ページのフレンドリURLの先頭に暗黙的に固定されているため、
/home
は、正規表現では^/home
と同じになります。Liferayは、Java正規表現パッケージが提供するすべての操作をサポートします。 詳しくは、 JDKドキュメント をご覧ください。
-
行先URLを入力します。
tipリファレンスを使って、URLのグループを置換パターンでキャプチャできます。 例えば、次の画像では、
$1
の値が(\d+)
正規表現でキャプチャされた値のグループに置き換えられています。 -
(オプション)プラス ボタンをクリックすると、サイトに複数のリダイレクトパターンを追加することができます。
-
[保存] をクリックします。
循環リダイレクトを作成しないようにします。 これらは、コンテンツフレンドリURLのリダイレクトを定義する際に簡単に作成できます(例:同じコンテンツに対して異なるフレンドリURL間でリダイレクトする)。 Liferay はこれらのループを確実に検出することができません。
パターンリダイレクトの作成ドメインの変更
https://www.old-site.com、https://www.new-site.com のように2つのドメインがある場合、1つのドメインからもう1つのドメインにページをリダイレクトすることができます:
-
https://www.old-site.com。
-
サイトメニュー( ) を開き、 コンフィギュレーション → リダイレクト に進む。
-
パターンの下に、
^(.*)
を追加する。この正規表現はソースリクエストのURLパス全体をキャプチャします。
-
宛先URLの下に、
https://www.new-site.com/$0
を追加する。`` は、キャプチャされたURLパス全体を、ソースから宛先URLまで追加する。
-
[Save] をクリックします。
今、https://www.old-site.com/examplepage にアクセスすると、https://www.new-site.com/examplepage にリダイレクトされる。
パターンリダイレクトを理解する
ユーザーがソースURLにアクセスしようとすると、LiferayはレイアウトフレンドリURLに対して、指定された順序でパターンをテストします。 一致は、おおよそ下記のようなルールで行われます。
-
URLがコントロールパネルURLの場合、コントロールパネルのURLをキャプチャすることができないため、一致は行われません。
-
現在のURLにエイリアスリダイレクトがある場合、ユーザーはその宛先にリダイレクトされます。
-
エイリアスが見つからない場合、Liferayはすべてのパターンを使い切るか、そのうちの1つが一致するまで、それぞれのリダイレクトパターンを順番にテストします。 Liferay はユーザーを最初の一致にリダイレクトします。