|
Sprechende Adressen für APEX-Anwendungen
Häufig hat man den Wunsch, einer APEX-Anwendung anstelle der
"f?p=..."-Syntax eine "sprechende" Adresse
zu geben. Dies ist mit Hilfe eines Apache-Moduls recht einfach
machbar. Die Konfiguration erfolgt allerdings nicht in APEX selbst,
sondern im Apache Web Server, über den die APEX-Seiten ausgeliefert
werden. Nutzern des PL/SQL Embedded Gateway in Oracle11g bringt das allerdings
nicht viel, denn hier wird gerade kein Apache Webserver verwendet. Allerdings
gibt es auch hier eine Möglichkeit: Mit einem speziellen Java-Servlet, welches
in der Datenbank hinterlegt wird, kann auch in diesen Umgebungen
URL Rewriting stattfinden. In OracleXE kann der Tipp jedoch nicht angewendet werden,
da hier keine Java-Engine vorhanden ist.
Sprechende URL mit dem Apache Webserver
Das Apache-Modul mod_rewrite kann
in den Browser eingegebene URLs beliebig umschreiben. Welche Eingaben
wie umgeschrieben werden, wird mit Hilfe von regulären Ausdrücken
festgelegt.
Die Konfiguration erfolgt in der Apache-Konfigurationsdatei
httpd.conf. Die Arbeitsweise
sei anhand eines Beispiels beschrieben.
Zunächst muss sichergestellt sein, dass das
mod_rewrite beim Starten des Apache geladen wird.
Die nächste Direktive RewriteEngine On
schaltet das Modul
ein. Jede abgerufene Seite wird von nun zunächst anhand der folgenden Ausdrücke
überprüft.
Wenn die URL http://myserver.de/Anwendung-1
eingegeben wird, so
passt sie genau auf den regulären Ausdruck in der ersten
RewriteRule-Direktive. Tatsächlich ausgeführt wird demnach die URL
http://myserver.de/pls/htmldb/f?p=4711:1.
Diese ruft die Seite
1 der HTML DB-Anwendung 4711 auf. Mit dem HTTP-Code 301 wird
dem Browser diese Umleitung mitgeteilt.
Mehr zum Apache-Modul mod_rewrite
finden Sie in der Dokumentation.
Sprechende URL mit dem Oracle11g PL/SQL Embedded Gateway
Achtung: Dieser Tipp funktioniert nicht in OracleXE, da hier die Java-Engine der
Datenbank verwendet wird. In OracleXE ist diese nicht vorhanden.
Das PL/SQL Embedded Gateway bringt out-of-the-box keine Möglichkeit zum Umschreiben von URL
mit. Nimmt man jedoch die in der Datenbank enthaltene Java-Engine zu Hilfe, so stellt man
fest, das alles nötige vorhanden ist:
- Die Rewrite-Regeln müssen gespeichert werden - dazu nehmen wir eine normale Datenbanktabelle.
- Es wird eine Schnittstelle zum Hinzufügen der Löschen von Regeln benötigt. Ein PL/SQL Package übernimmt das.
- Und schließlich wird ein "Stück Software" benötigt, welche die eigentliche Umleitung übernimmt. Dazu
wird ein Java Servlet in die Datenbank hinterlegt und im Protokollserver registriert.
Führen Sie das folgende Skript (Download) in Ihrer Datenbank als SYS aus. Es legt die Tabelle, das
PL/SQL-Paket und das Java-Servlet an und vergibt die nötigen Privilegien.
Mit dem PL/SQL-Paket REWRITE_RULE_MGR können Sie nun Regeln
hinzufügen oder löschen und mit der View REWRITE_RULE können Sie die bestehenden ansehen.
Eine Regel ist bereits hinterlegt. Sie schreibt eine URL im Format aXXXpYYYY, wobei
"a" die Applikation und "p" die Seitennummer ist,
ins "richtige" APEX-Format um. Probieren
Sie es aus.
Beachten Sie das /u/, mit dem alle URL beginnen müssen. Im Gegensatz zum Apache Webserver
muss das Umleitungs-Servlet an einer bestimmten Stelle registriert werden. Im Beispiel
werden alle URL, die mit /u/ beginnen, vom Servlet bearbeitet. Das ist die einzige
Einschränkung - ansonsten lässt sich mit dem Servlet genauso arbeiten wie mit dem Rewrite-Modul
des Apache Webserver. Wenn Sie einen anderen URL-Präfix verwenden möchten (bspw. "app"), dann
ändern Sie das Skript (recht weit unten) wie folgt um:
Auf diese Weise können auch für APEX-Anwendungen URL "nach Wunsch"
vergeben werden.
Zurück zur Community-Seite
|