Nachfolgende Beschreibung bezieht sich auf die Problematik des SEF bei evtl. Pagenavigationen zur Anzeige von Folgeseiten einer Trefferlistenausgabe, wie z.B. bei Produktsuchen in VirtueMart. Nachfolgende Lösung ist auch daran konkret

Problembeschreibung

Kann man bei Trefferlistenseiten blättern, so wird durch sh404SEF für diese Seiten an die Adresse die Zählung angefügt in dieser Form: Pfad/Page-1-50.html. In Konsequenz bedeutet dieses Verhalten, dass es pro Seite wo eine Pagenavigationen angeboten werden i.d.R. bis zu 10 solcher Folgeseiten existerien könnten. Noch extremer wird es, wenn der Seitenbesucher selbst die Pagenavi-Einstellungen modifiziert, z.B. die Anzeige der Trefferzahl. Dann kämen zum Standard noch diese individuellen dazu. In der Redirection-DB-Tabelle kommen so schnell eine riesige Menge an Datensätzen zustande und bremsen das System aus.

Dieses Verhalten allerdings zu unterdrücken ist nicht ratsam. Statt dessen solle Google der Zugriff auf die Folgeseiten verboten werden oder noch besser, wenn für diese Links keine SEF-URL-Erzeugung stattfindet. Das ist nämlich auch gar nicht notw. weil diese Links von Google eh nicht erreicht werden, weil Sie immer nur auf konkreten Trefferlisten mit vorherig auszufüllenden Suchmasken erscheinen.

Lösung

Um zu verhindern, dass Pagination-Links SEF-übersetzt werden, ist konkret wie folgt zu verfahren – allerdings hat dies noch eine Ungereimtheit. In den Links wird die URL zwar im Original belassen, aber sobald die neue Seite aufgerufen ist, steht als URL in der Adresszeile trotzdem der übersetzte URL und auch in der jos_redirection stehen diese nach wie vor drin. Damit ist der Erfolgt insgesamt etwas fragwürdig.

Entscheidend ist der URL der erzeugt wird. SEF wendet dann die Übersetzung an, wenn der URL mit index.php beginnt oder mit der Domain. Das SEF wird sofort verhindert, wenn der URL mit / beginnt.

Die Pagination wird in der Scriptklasse pageNavigation.class.php erzeugt, aber die Funktion getPagesLink() oder writePagesLinks() erwarten als Parameter immer schon die Link-URL. Diese wird als Funktionsparameter $link verwendet.