contao/core — Issue #3955: Neuer Hook validateUrl
Author: vbinsider
Created: 2012-02-17 00:49:40+00:00
State: open

Hallo zusammen,

der in 2.11 eingeführte Fix für #2864 führt bei einem meiner Module leider zu einer Regression (will sagen, vorher liefs, und jetzt nicht mehr).
Hintergrund ist eine von mir entwickelte Kurz-URL-Extension, die per `getPageIdFromUrl`-Hook herausfindet, ob die aktuelle URL eine (in der DB verzeichnete) Kurz-URL ist und entsprechend weiterleitet. Diese Kurz-URLs haben _nicht_ das standardmäßige `urlSuffix` (klar, denn sonst würden sie ja mit dem Namensraum der normalen Page-Aliase kollidieren).

0a5ffa5ac1426212ab4ffacf52fbfccf führt jetzt dazu, dass die vorher brav als solche erkannten Kurz-URLs jetzt alle einen 404 auslösen. Daher habe ich das `return false;`, das in die Funktion `Controller::getPageIdFromUrl` eingebaut wurde, um den 404 zu triggern, wieder auskommentiert. Grundsätzlich finde ich das `return false;` persönlich ein wenig unglücklich, denn die URL könnte ja von irgendeiner Extension verwendet werden (sei es als Ajax-Target oder wer-weiß-wofür). Es gibt aber keine Möglichkeit, dem Core zu sagen: "Du, diese URL ist korrekt."

Zur langfristigen Problemlösung schlage ich vor, einen Hook `validateUrl` einzuführen, der `$strRequest` bekommt und einfach `true` oder `false` zurückgibt und dann im Einzelfall entscheidet, ob der 404 tatsächlich ausgelöst werden soll oder nicht. Wenn der oft verwendeten Standard-Hook-Aufrufemechanismus anstelle des `return false` eingesetzt wird, gibt's bei 99% aller Seitenaufrufe noch nicht mal eine Verzögerung.

Falls ihr eine andere Möglichkeit seht, das Problem zu lösen, bin ich ganz Ohr. Bitte nicht mod_rewrite für meine Kurz-URLs vorschlagen. Ich kann meinen Kunden nicht zumuten, hunderte von Kurz-URLs per "RewriteMap" zu pflegen. Gerade jetzt, wo sich die Liste mit dem neuen Autocompleter im Backend so schön darstellen lässt.

Vielen Dank für die ansonsten solide Arbeit,
Christian Spoo