URL mit Realurl und Extbase möglichst kurz machen

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

 

Danke, in2code
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

1 Comments

Hinterlasse einen Kommentar.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.