フレンドリー URL を定義する URL Rewrite オブジェクトは、Web サイトの使いやすさとアクセシビリティを向上させることを目的とするオブジェクトです。
URL およびオブジェクトへの対応するマッピングを、パラメーターとともに定義できます。
フレンドリー URL を定義することで、インターフェースを実装から分離できます。
- これは、SEO フレンドリーにするために役立ちます。
- 定義された URL は、オブジェクト名やナレッジベースでのそれらのモジュール化とは独立しています。
- 定義された URL は、選択したジェネレーターとは独立しています。これにより、柔軟性が増し、特定のプラットフォーム (.NET、.NET Core、または Java) への固定化が軽減されます。
このオブジェクトにはいくつかのパーツがあります:
- [ Rewrite Rules ]
- [ Variables ]
- [ Help ]
- [ Documentation ]
これは URL Rewrite オブジェクトのメインパーツであり、マッピング (リライトルール) を定義できます。
各マッピングの左側のパーツで URL (またはその一部) が指定され、右側ではオブジェクトとそのパラメーターが参照されます。マッピングはセミコロンで区切ります。
home => Home;
core/clients => Core.WWClient;
core/clients/{&ClientId}/{&Mode} => Core.Client(&Mode,&ClientId);
core/clients/{&ClientId} => Core.ViewClient(&ClientId);
上記のマッピングでは、次のような URL になります。
- http://www.example.com/home
- http://www.example.com/core/clients
- http://www.example.com/core/clients/1/UPD
- http://www.example.com/core/client/1
- すべてのパラメーターを参照する必要はありません。
- URL Rewrite オブジェクトを作成すると、Link 関数の動作が変わります。URL Rewrite オブジェクトが存在する場合、ドキュメントの相対 URL ではなく、サーバーの相対 URL を返します。これにより、結果の文字列を別の文字列と連結して絶対 URL を作成するなど、コードが大きく変化する可能性があります。
この機能を使用する際には、いくつかの制限があります。
欠けているパラメーターがクエリ文字列に追加されます:
core/clients/{&ClientId} => Core.Client(&Mode,&ClientId);
結果は次のようになります:
- http://www.example.com/core/clients/1?Mode=UPD
オブジェクトは次のように呼び出されます:
Core.Client('UPD',1)
次のように記述します:
core/client => Core.Client;
オブジェクト Core.Client に次が設定されている場合も同じです。
parm(in:&Mode,in:&ClientId)
この例では、パラメーターの位置が決まっているスタイルの場合、結果の URL は次のようになります:
- http://www.example.com/core/client?UPD,1
オブジェクトは次のように呼び出されます:
Core.Client('UPD',1)
GeneXus では、Deployment Unit オブジェクトのデプロイ時に、ナレッジベースの URL Rewrite オブジェクトで定義されたルールがすべて自動的にデプロイされます。これは、異なるオブジェクトで定義されたルール間に競合があってはならないことを意味します。
Tomcat 8 以降にデプロイする場合、リライトルールは自動的に機能しますが、別のサーブレットサーバーにデプロイする場合は、追加の設定が必要になる可能性があります。その場合は、urlrewrite.config ファイルのルールを使用してサーバーを構成します。
ジェネレーター: .NET、.NET Core、Java
|