![](https://www.a-assist.co.jp/wp-content/uploads/2021/01/POST_0018_25.jpg)
#実装方法:新機能URL Rewriteについて
2021年01月13日
こんにちは。新人の岩成です。
先日、GeneXusの発祥地であるウルグアイでは最新バージョンのGeneXus17がリリースされました。
リリースノートはこちらになります。(日本では今現在まだリリースされていません。)
リリースノートにもあるように、新バージョンでは既存オブジェクトに下記4つのオブジェクトが追加されました。
- URL Rewriteオブジェクト
- UIテストオブジェクト
- APIオブジェクト
- Master Panelオブジェクト
そこで、この記事では4つのうちの1つであるURL Rewriteオブジェクトについてご紹介します。
URL Rewriteオブジェクト
URL Rewriteオブジェクトは、名前の通りURLを書き換え、オブジェクトとURLをマッピングするものです。
- シンプルなURLにしたい
- コンテンツを想像できるユーザフレンドリーなURLにしたい
- オブジェクトの名前に変更があったけれど以前と同じURLでアクセスしたい
- 検索エンジン評価を上昇させたい
などといったときに有効です。
オブジェクト名や選択言語から独立させることができるので、開発環境に依存しないURLを定義できます。
では、実際に使用してみたいと思います。
今回はGeneXusによって生成された3つの画面のURLを変更します。(なお、今回はjava+tomcatで行います。)
- .Work with for webで作成した一覧画面のURL
- WebパネルのURL
- トランザクションの更新画面のURL
※注意点として、URLの書き換えは以下の条件を満たしているオブジェクトのみできます。
- Encrypt URL ParametersプロパティがNoになっている。(各オブジェクトプロパティ)
- Parameter StyleプロパティがNamedになっている。(ジェネレータープロパティ)
1.Work with for webで作成した一覧表示画面のURL変更
商品トランザクションと、そこに登録されている商品を一覧表示する画面があるとします。
URL末尾の「/com.genexus17sumplekb2.wwshohintr」を「/ShohinList」に変更します。
「wwshohintr」がオブジェクト名です。
Work with for webでの一覧画面(WWShohinTR)
![](/wp-content/uploads/2023/07/POST_0018_01-1024x202.png)
![](/wp-content/uploads/2023/07/POST_0018_03-1-1024x321.png)
それでは実装を行います。
まず、GeneXus17で ファイル➡新規➡オブジェクト で「URL Rewrite」 を選択します。
![](/wp-content/uploads/2023/07/POST_0018_04.png)
作成したURL RewriteオブジェクトのRewrite Rulesタブにこのように記述します。
左側が変更後のURLの一部で、右側がマッピングさせたいオブジェクト名となっています。
![](/wp-content/uploads/2023/07/POST_0018_05.png)
ビルドを行うと、変更後のURLになります。
![](/wp-content/uploads/2023/07/POST_0018_06-1024x499.png)
2.WebPanelのURL変更
先ほどはWork with for webを適用した一覧画面でのURLの変更でしたが、今回は手動で作成したWebPanelのURLを変更します。
URL末尾の「com.genexus17sumplekb2.shohinwebpanel」「/ShohinListWebPanel」にシンプルにします。
「shohinwebpanel」がオブジェクト名です。
グリッドを置いて1の一覧画面と同じような画面を作成します。
![](/wp-content/uploads/2023/07/POST_0018_07-1.png)
WebPanelでの一覧画面(ShohinWebPanel)
![](/wp-content/uploads/2023/07/POST_0018_09-1-1024x137.png)
![](/wp-content/uploads/2023/07/POST_0018_10-1024x242.png)
それでは実装を行います。
1で作成したURL rewriteオブジェクトにこのように記述します。
同様に、左側が変更後のURLの一部で右側がマッピングさせたいオブジェクト名となっています。
![](/wp-content/uploads/2023/07/POST_0018_11.png)
ビルドすると、変更後のURLになります。
![](/wp-content/uploads/2023/07/POST_0018_12-1024x329.png)
3.トランザクション更新画面のURL変更
次に、コーラの商品単価を更新します。
「更新」のリンク押下で、トランザクションの更新画面になります。
URL末尾の「/com.genexus17sumplekb2.shohintr?Mode=UPD&ShohinId=1」 のパラメータを「/」で区切って
「/ShohinTR/UPD/1」に変更します。「shohintr」がオブジェクト名です。
一覧画面
![](/wp-content/uploads/2023/07/POST_0018_13-1-1024x175.png)
商品トランザクション更新画面(ShohinTR)
![](/wp-content/uploads/2023/07/POST_0018_14.png)
![](/wp-content/uploads/2023/07/POST_0018_15-1024x233.png)
それでは実装を行います。
1と2で作成したURL RewriteオブジェクトのRewrite Rulesタブにこのように追記します。()内はパラメータです。
![](/wp-content/uploads/2023/07/POST_0018_16.png)
ビルドを行うと変更後のURLになります。
![](/wp-content/uploads/2023/07/POST_0018_17-1024x669.png)
※パラメータを1つにした場合、デフォルトのパラメータ「?mode=UPD」がURL末尾に補われます。
![](/wp-content/uploads/2023/07/POST_0018_18.png)
Work with for webを使用した一覧画面と、WebPanelでの画面、トランザクション画面のURLの変更方法については以上です。
補足1
URL Rewriteオブジェクトにルールを記述すると、WEB-INFフォルダ内に「rewrite.config」ファイルが自動的に作成されていました。
![](/wp-content/uploads/2023/07/POST_0018_19.png)
これらのURLの書き換えは、Tomcatのrewrite Valve機能を使用して
アクセスのあったURLを正規表現で書き換えているようです。
そのため画面のアドレスバーに表示されているのは新しいURLですが、内部的にはデフォルトのURLが返されています。
URL Rewriteオブジェクト自体を削除しても、こちらのファイルが残っていると書き換えが有効になってしまうので注意してください。
補足2
URLの変更後でもデフォルトのURLであればアクセスが可能です。
デフォルトのURLでアクセスすると、アドレスバーのURLが書き換えた新しいURLに自動的に切り替わります。
![](/wp-content/uploads/2023/07/POST_0018_20-1024x325.png)
補足3
同じ画面を2つの異なるURLに書き換えると、最初に記述したURLが適用されます。
しかし、どちらのURLでもアクセスできます。
![](/wp-content/uploads/2023/07/POST_0018_21.png)
![](/wp-content/uploads/2023/07/POST_0018_22.png)
16以前のバージョンでは、C#ではIISからURLを変更したり、Javaではjarファイルをインストールしたり設定が難しいため
GeneXus内で簡単に変更できるようになったのはとても便利ですね。
以上が新しいオブジェクトURL Rewriteのご紹介でした。
最後までお読みいただきありがとうございました。