Kurze URLs schauen schön aus, lassen sich gut verbreiten (auch in Printprodukten) und sind wohla uch SEO-mäßig besser. Leider bringt Extbase erst einmal viele Parameter in der URL mit, und je nach Seitenbaum bringen auch die Ebenen viele URL-Anteile mit.
Mit etwas Trickserei bekommt man am Ende am doch schöne kurze URLs:
Bei einem Kunden in der Restaurantbranche ist es immens wichtig (sagt der SEO-Consultant), dass die URL möglichst kurz ausfällt. Im Prinzip wird eine URL gewünscht, die in etwa so aussieht:
example.com/objekte/objekt-in-rot.html
Dummerweise handelt es sich bei uns um eine Detailansicht innerhalb einer Extbase-Extension. Im schlimmsten Fall sieht die URL also so aus:
example.com/seite/objekte/action/show/controll/Object/object/objekt-in-rot.html
Mit ein bisschen Recherche, ein wenig Ausdauer und ein paar guten Hinweisen dank t3seo.de und verkon.de sind wir zum Ziel gekommen.
Übrigens auch eine gute Möglichkeit, Teile aus einem Realurl-Generierten-Pfad zu entfernen: t3node.com
1. Seitenpfad möglichst kürzen
Die betroffene Detailseite befindet sich bei uns im TYPO3 Seitenbaum unter seite/objekte/ – aber besser wäre lediglich objekte/
Da wir die Seite nicht ins Root-Verzeichnis verschieben wollen, gehen wir in die Seiteneigenschaften der Seite und tragen im Feld „Speaking URL path segment“ den Namen „objekte“ ein.
Eine Kontrolle durch Aufruf der Seite im Frontend sollte die URL nun kürzer aussehen lassen
Bis hier:
example.com/seite/objekte/action/show/controll/Object/object/objekt-in-rot.html
Nachher:
example.com/objekte/action/show/controll/Object/object/objekt-in-rot.html
2. Controller in Defaultwert nicht mehr anzeigen
Seit TYPO3 4.6 ist es in Extbase möglich, Defaultwerte gar nicht mehr in der URL als GET-Parameter anzeigen zu lassen:
plugin.tx_extension { features { skipDefaultArguments = 1 } }
Bis hier:
example.com/objekte/action/show/controll/Object/object/objekt-in-rot.html
Nachher:
example.com/objekte/action/show/object/objekt-in-rot.html
3. Action nicht mehr zeigen
Hätten wir nur noch eine Action oder wäre unsere Default-Action auch die Detailansicht, so würde diese jetzt nicht mehr angezeigt werden.
Dummerweise nutzen wir die gleiche PID für Listenansicht und Detailansicht. Kommt der Besucher nun auf die Seite 72, soll er zuerst die Listenansicht zu Gesicht bekommen.
Die Default-Action wird in der Regel durch die Reihenfolge der Actions in der ext_localconf.php bestimmt. In unserem Fall jedoch durch die Reihenfolge der Actions im Flexform (Stichwort switchableControllerActions).
Wir haben uns dazu entschieden, die Detailansicht als erstes aufzulisten und einen Redirect einzubauen, falls die Object-ID nicht übergeben wurde.
public function showAction(\Vendor\Extension\Domain\Model\Object $object = null) { if ($object === null) { $this->forward('list'); } ... }
Bis hier:
example.com/objekte/action/show/object/objekt-in-rot.html
Nachher:
example.com/objekte/object/objekt-in-rot.html
4. Realurl Config anpassen – Key entfernen
... 'fixedPostVars' => [ 'extDetailConfiguration' => [ [ 'GETvar' => 'tx_extension_pi1[object]', 'lookUpTable' => [ 'table' => 'tx_ext_domain_model_object', 'id_field' => 'uid', 'alias_field' => 'title', 'addWhereClause' => ' AND NOT deleted', 'useUniqueCache' => 1, 'useUniqueCache_conf' => [ 'strtolower' => 1, 'spaceCharacter' => '-', ], ], ] ], '72' => 'extDetailConfiguration' ], ...
Bis hier:
example.com/objekte/object/objekt-in-rot.html
Nachher:
example.com/objekte/objekt-in-rot.html
Ursprünglich wurde dieses Wissen in der Snippet-Sammlung von in2code geteilt. Leider ist deren Sammlung einem Relaunch zum Opfer gefallen.
Der Beitrag wurde mittels archive.org wiederhergestellt, leicht modifiziert/modernisiert und mit freundlicher Genehmigung von in2code wieder bereitgestellt.
Links
- Original Beitrag „URL mit Realurl und Extbase möglichst kurz machen“ von in2code via Archive.org (Stand: 2016-01-05) (als PDF-Backup)
Danke Julian für den Blogpost.
Viele Grüße aus Rosenheim