TYPO3 Routing erklärt: Erweiterungen & Aspekte

TYPO3 Routing war eines der am meisten erwarteten Features in der Geschichte von TYPO3. Schließlich entwickelte und veröffentlichte die TYPO3-Community TYPO3 v9. In diesem Artikel möchte ich Sie (Anfänger bis Fortgeschrittene) über TYPO3-Routing informieren.

TYPO3 Routing erklärt: Erweiterungen & Aspekte

TYPO3 Routing war eines der am meisten erwarteten Features in der Geschichte von TYPO3. Schließlich entwickelte und veröffentlichte die TYPO3-Community TYPO3 v9. In diesem Artikel möchte ich Sie (Anfänger bis Fortgeschrittene) über TYPO3-Routing informieren.

Seit über 20 Jahren fehlte in TYPO3 die eingebaute TYPO3-Routing-Funktion für Human/SEO-freundliche URLs. In der Vergangenheit war die TYPO3-Gemeinschaft auf Erweiterungen zur Verwaltung von TYPO3-URLs wie EXT:realurl angewiesen. Für ein so wichtiges Feature war es für jeden sehr schwierig, sich auf andere Erweiterungen zu verlassen. Wie dem auch sei, jetzt haben wir ein fantastisches TYPO3-Routing-Feature innerhalb des TYPO3 Kerns, also lassen Sie uns untersuchen, wie es funktioniert.

Wussten Sie davon?
Das Routing in TYPO3 ist auf Basis der Symfony-Routing-Komponenten implementiert.

Der menschenfreundliche Name des Routing ist "Sprechende URL", TYPO3 ist ein bisschen berühmt dafür, "entwicklerfreundliche" Namen für CMS-Funktionen zu vergeben ;)

Vor: https:// t3planet .com/index.php?id=10
Nach: https:// t3planet .com/news

Vor: https:// t3planet .com/profiles?user=magdalena
Nach: https:// t3planet .com/profiles/magdalena

Die Route

Die sprechende URL als Ganzes (ohne den Domain-Teil); zum Beispiel /blog/post/typo3-routing

Schnecke

Eindeutiger Name für eine Ressource, der bei der Erstellung von URLs verwendet werden soll; zum Beispiel könnte der Slug der Blog-Post-Seite /blog/post und der Slug eines Blog-Eintrags "typo3-routing" lauten.

Um das TYPO3-Routing zu aktivieren und gut zu konfigurieren, sollten Sie die folgenden Einstellungen für Ihren speziellen Web-Server konfigurieren.

Apache

 

Enable mod_rewrite Apache modules. The following modules are used by the default .htaccess
# .Htaccess
RewriteEngine on
RewriteRule ^(typo3/|fileadmin/|typo3conf/|typo3temp/|uploads/|) - [L]
RewriteRule ^typo3$ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php [L]

 

Microsoft Internet Information Services (IIS)

Stellen Sie sicher, dass das URL-Rewrite-Plugin auf Ihrem System installiert ist.
https://www.iis.net/downloads/microsoft/url-rewrite 

NGINX

 

NGINX web server does not support any static file like htaccess in the document root by default.
The NGINX configuration has to be set up manually.

location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

Um das seitenbasierte Routing zu aktivieren, müssen Sie die folgenden Schritte konfigurieren.

Schritt 1. Erstellen einer Website-Konfiguration

Gehen Sie zu Site Management > Sites > "Neue Site-Konfiguration für diese Site hinzufügen".

Schritt 2. Website konfigurieren

Konfigurieren Sie alle Felder wie Einstiegspunkt, Site-Identifier, Sprachen, etc.

Schritt drei. URL-Segment auf Ihre Seiten setzen

Gehen Sie zu Web > Seite > Seite auswählen > Seiteneigenschaften bearbeiten > URL-Segment hinzufügen

Schritt 4. Testlauf-Frontend-URL

Um mehr über die Verwaltung von TYPO3-Websites zu erfahren, können Sie meinen Artikel lesen
How to Manage TYPO3 Site Configuration?

Einführung in config.yaml

Sobald Sie die Site-Konfiguration erstellt haben, generiert TYPO3 automatisch die Datei config.yaml an der unten angegebenen Stelle.

 

Für Composer-basierte TYPO3-Installation
/project-root/config/sites/your-site-name/

Für Nicht-Composer-basierte TYPO3-Installationen
/project-root/typo3conf/sites/your-site-name/

 

Beispiel für config.yaml

 

base: yourtypo3site.com
errorHandling:
  -
    errorCode: '404'
    errorHandler: Page
    errorContentSource: 't3://page?uid=1'
languages:
  -
    title: English
    enabled: true
    languageId: '0'
    base: /
    typo3Language: default
    locale: en_US.UTF-8
    iso-639-1: en
    navigationTitle: English
    hreflang: en-US
    direction: ''
    flag: gb
rootPageId: 1

TYPO3 kümmert sich um das Routing von CMS-Seiten mit coolen Backend-Funktionen menschenfreundlicher URLs. Aber was ist mit Ihren eigenen oder TER TYPO3-Erweiterungen?

Beispiel für Ihre Extension-URL https:// t3planet .com/path-to/my-page/products/index.php?id=10&tx_product_name[controller]=Product... sollte sein wie https:// t3planet .com/path-to/my-page/products/{product-name}

1. Einfacher Enhancer (Typ: Einfach)

Der Simple Enhancer arbeitet mit verschiedenen Routenargumenten, um sie einem Argument zuzuordnen, das später verwendet werden kann.

# Vor
https:// t3planet .com/index.php?id=13&category=241&tag=T3Planet

# Nach
https:// t3planet .com/path-to/my-page/show-by-category/241/T3Planet

 

# Config.yaml
routeEnhancers:
# Eindeutiger Name für die Enhancer, der intern zur Referenzierung verwendet wird
  CategoryListing:
    type: Simple
    limitToPages: [13]
    routePath: '/show-by-category/{category_id}/{tag}'
    defaults:
      tag: ''
    requirements:
      category_id: '[0-9]{1,3}'
      tag: '[a-zA-Z0-9].*'
    _arguments:
      category_id: 'category'

 

2. Plugin Enhancer (type: Plugin)

Der Plugin Enhancer arbeitet mit Plugins auf einer Seite, die allgemein als Pi-basierte Plugins bekannt sind, wo früher die folgenden GET/POST-Variablen verwendet wurden:

# Vor
https:// t3planet .com/index.php?id=13&tx_felogin_pi1[forgot]=1&&tx_felogin_pi1[user]=82&tx_felogin_pi1[hash]=ABC

# Nach
https:// t3planet .com/path-to/my-page/forgot-password/82/ABCDEFGHIJKLMNOPQRSTUVWXYZ012345

 

# Config.yaml
routeEnhancers:
  ForgotPassword:
    type: Plugin
    limitToPages: [13]
    routePath: '/forgot-password/{user}/{hash}'
    namespace: 'tx_felogin_pi1'
    defaults:
      forgot: "1"
    requirements:
      user: '[0-9]{1..3}'
      hash: '^[a-zA-Z0-9]{32}$'

 

3. Extbase Plugin Enhancer (type: Extbase)

Bei der Erstellung von Extbase-Plugins ist es sehr üblich, mehrere Controller/Action-Kombinationen zu haben. Der Extbase Plugin Enhancer ist daher eine Erweiterung des regulären Plugin Enhancers und bietet die Funktionalität, dass mehrere Varianten generiert werden, die typischerweise auf der Anzahl der Controller/Action-Paare aufbauen.

# Vor
https:// t3planet .com/index.php?id=13&tx_news_pi1[controller]=News&tx_news_pi1[action]=list&tx_news_pi1[page]=5

# Nach
https:// t3planet .com/path-to/my-page/list/5

 

# Config.yaml
routeEnhancers:
  NewsPlugin:
    type: Extbase
    limitToPages: [13]
    extension: News
    plugin: Pi1
    routes:
      - { routePath: '/list/{page}', _controller: 'News::list', _arguments: {'page': '@widget_0/currentPage'} }
      - { routePath: '/tag/{tag_name}', _controller: 'News::list', _arguments: {'tag_name': 'overwriteDemand/tags'}}
      - { routePath: '/blog/{news_title}', _controller: 'News::detail', _arguments: {'news_title': 'news'} }
      - { routePath: '/archive/{year}/{month}', _controller: 'News::archive' }
    defaultController: 'News::list'
    defaults:
      page: '0'
    requirements:
      page: '\d+'

 

4. Seitentyp-Dekorator (Typ: PageType)

Der PageType Enhancer (Decorator) ermöglicht das Hinzufügen eines Suffixes zu der vorhandenen Route (einschließlich vorhandener anderer Enhancer), um einen Seitentyp (GET-Parameter &type=) auf ein Suffix abzubilden.

# Vor
https:// t3planet .com/?type=13

# Nach
https:// t3planet .com/rss.feed.json

 

# Setup.typoscript
rssfeed = PAGE
rssfeed.typeNum = 13
rssfeed.10 < plugin.tx_myplugin
rssfeed.config.disableAllHeaderCode = 1
rssfeed.config.additionalHeaders.10.header = Content-Type: xml/rss

 

 

# Config.yaml
routeEnhancers:
   PageTypeSuffix:
      type: PageType
      default: '.json'
      index: 'index'
      map:
         'rss.feed': 13
         '.json': 26

 

5. Kundenspezifische TYPO3-Erweiterungen entwickeln

 

Für den Fall, dass Sie Ihre eigene Geschäftslogik in Ihrer Erweiterung erstellen möchten, ist TYPO3 flexibel, um eigene TYPO3 Enhancer zu konfigurieren, indem Sie eine eigene Enhancer-Klasse registrieren

# ext_localconf.php
$GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']['enhancers']['MyCustomEnhancerAsUsedInYaml'] = \MyVendor\MyExtension\Routing\Enhancer\MyCustomEnhancer::class;

Die TYPO3 Aspects-Konfiguration ist hilfreich, um einen Parameter {blog}, der eine UID innerhalb von TYPO3 ist, auf den eigentlichen Blog-Slug abzubilden, d.h. ein Feld innerhalb der Datenbanktabelle, das den bereinigten/sanitisierten Titel des Blogs enthält (z.B. "typo3-routing" bildet auf die Blog-ID 10 ab).

1. StaticValueMapper

Der StaticValueMapper ersetzt Werte einfach auf einer 1:1-Zuordnungsliste eines Arguments in ein sprechendes Segment.

# Result
https:// t3planet .com/archive/{year}/{month}

 

# Config.yaml
routeEnhancers:
  NewsArchive:
    type: Extbase
    limitToPages: [13]
    extension: News
    plugin: Pi1
    routes:
      - { routePath: '/{year}/{month}', _controller: 'News::archive' }
    defaultController: 'News::list'
    defaults:
      month: ''
    aspects:
      month:
        type: StaticValueMapper
        map:
          january: 1
          february: 2
          march: 3
          april: 4
          may: 5
          june: 6
          july: 7
          august: 8
          september: 9
          october: 10
          november: 11
          december: 12

 

2. LocaleModifier

# Result
English Language: https:// t3planet .com/archive/{year}/{month}/
German Language: https:// t3planet .com/archiv/{year}/{month}/

 

# Config.yaml
routeEnhancers:
  NewsArchive:
    type: Extbase
    limitToPages: [13]
    extension: News
    plugin: Pi1
    routes:
      - { routePath: '/{localized_archive}/{year}/{month}', _controller: 'News::archive' }
    defaultController: 'News::list'
    aspects:
      localized_archive:
        type: LocaleModifier
        default: 'archive'
        localeMap:
          - locale: 'fr_FR.*|fr_CA.*'
            value: 'archives'
          - locale: 'de_DE.*'
            value: 'archiv'

 

3. StaticRangeMapper

# Result
https:// t3planet .com/list/{page}/1

 

# Config.yaml
routeEnhancers:
  NewsPlugin:
    type: Extbase
    limitToPages: [13]
    extension: News
    plugin: Pi1
    routes:
      - { routePath: '/list/{page}', _controller: 'News::list', _arguments: {'page': '@widget_0/currentPage'} }
    defaultController: 'News::list'
    defaults:
      page: '0'
    requirements:
      page: '\d+'
    aspects:
      page:
        type: StaticRangeMapper
        start: '1'
        end: '100'

 

4. PersistedAliasMapper

Wenn eine Erweiterung mit einem Slug-Feld oder einem anderen Feld geliefert wird, das für den sprechenden URL-Pfad verwendet wird, kann dieses Datenbankfeld zum Aufbau der URL verwendet werden:

# Result
https:// t3planet .com/detail/{path_segment}/

 

# Config.yaml

routeEnhancers:
  NewsPlugin:
    type: Extbase
    limitToPages: [13]
    extension: News
    plugin: Pi1
    routes:
      - { routePath: '/detail/{news_title}', _controller: 'News::detail', _arguments: {'news_title': 'news'} }
    defaultController: 'News::detail'
    aspects:
      news_title:
        type: PersistedAliasMapper
        tableName: 'tx_news_domain_model_news'
        routeFieldName: 'path_segment'
        routeValuePrefix: '/'

 

5. PersistedPatternMapper

Wenn ein Platzhalter aus mehreren Feldern der Datenbank geholt werden soll, ist der PersistedPatternMapper das Richtige für Sie. I

# Result
https:// t3planet .com/blog/{title}-{uid}/

 

# Config.yaml
routeEnhancers:
  Blog:
    type: Extbase
    limitToPages: [13]
    extension: BlogExample
    plugin: Pi1
    routes:
      - { routePath: '/blog/{blogpost}', _controller: 'Blog::detail', _arguments: {'blogpost': 'post'} }
    defaultController: 'Blog::detail'
    aspects:
      blogpost:
        type: PersistedPatternMapper
        tableName: 'tx_blogexample_domain_model_post'
        routeFieldPattern: '^(?P<title>.+)-(?P<uid>\d+)$'
        routeFieldResult: '{title}-{uid}'

 

6. Kundenspezifische TYPO3-Aspekte entwickeln

 

Ähnlich wie Enhancers bietet der TYPO3-Kern eine API, mit der Sie Ihre eigenen benutzerdefinierten Aspekte erstellen können, indem Sie sich unten registrieren.
​​​​​​
# ext_localconf.php
$GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']['aspects']['MyCustomMapperNameAsUsedInYamlConfig'] = \MyVendor\MyExtension\Routing\Aspect\MyCustomMapper::class;

Example #1 TYPO3 Routing for EXT:news

# Result
Detail view: https:// t3planet .com/news/detail/the-news-title
Pagination: https:// t3planet .com/news/page-2
Category filter: https:// t3planet .com/news/my-category
Tag filter: https:// t3planet .com/news/my-tag

 

# Config.yaml
routeEnhancers:
  News:
    type: Extbase
    extension: News
    plugin: Pi1
    routes:
      - routePath: '/page-{page}'
        _controller: 'News::list'
        _arguments:
          page: '@widget_0/currentPage'
      - routePath: '/{news-title}'
        _controller: 'News::detail'
        _arguments:
          news-title: news
      - routePath: '/{category-name}'
        _controller: 'News::list'
        _arguments:
          category-name: overwriteDemand/categories
      - routePath: '/{tag-name}'
        _controller: 'News::list'
        _arguments:
          tag-name: overwriteDemand/tags
    defaultController: 'News::list'
    defaults:
      page: '0'
    aspects:
      news-title:
        type: PersistedAliasMapper
        tableName: tx_news_domain_model_news
        routeFieldName: path_segment
      page:
        type: StaticRangeMapper
        start: '1'
        end: '100'
      category-name:
        type: PersistedAliasMapper
        tableName: sys_category
        routeFieldName: slug
      tag-name:
        type: PersistedAliasMapper
        tableName: tx_news_domain_model_tag
        routeFieldName: slug

 

Example #2 TYPO3 Routing for EXT:blog

Die TYPO3-Blog-Erweiterung bietet eine integrierte TYPO3-Routing-Konfiguration, die Sie einfach wie unten beschrieben in Ihr Projekt importieren können.

 

# Config.yaml
imports:
- { resource: "EXT:blog/Configuration/Routes/Default.yaml" }

Um Ihnen die Arbeit zu erleichtern, habe ich versucht, hilfreiche TYPO3-Routing-Erweiterungen wie unten beschrieben zu finden.

1. Slug

Hilft bei der Verwaltung der URL-Slugs Ihrer TYPO3-Seiten und benutzerdefinierten Datensätze! Das Slug-Backend-Modul wurde entwickelt, um große Mengen von Slugs für Seiten und Extension-Datensätze zu verwalten.

2. URL-Slugs wiederherstellen

Hilft bei der Verwaltung der URL-Slugs Ihrer TYPO3-Seiten und benutzerdefinierten Datensätze! Das Slug-Backend-Modul wurde entwickelt, um große Mengen von Slugs für Seiten und Extension-Datensätze zu verwalten.

3. Just In Case - Case-insensitive URLs

Bei eingehenden URLs spielt es keine Rolle, ob sie groß- oder kleingeschrieben sind, sie funktionieren einfach. Standardmäßig ist TYPO3 v9 streng, wenn Ihre eigentliche Seite aufgerufen wird  aber Ihre Marketing-Typen nennen es . TYPO3 v9 speichert URLs standardmäßig in Kleinbuchstaben.

4. Extbase Yaml-Routen

Bietet die Möglichkeit, einen Route Slug an einen bestimmten Extbase Action-Endpunkt zu binden. Diese Erweiterung gibt Ihnen die Möglichkeit, den URL-Endpunkt mit einer bestimmten Extbase Action zu binden. Kurz gesagt, Sie können eine API für Ihr TYPO3-Projekt erstellen.

Merkmale

  • Erlauben Sie dem Entwickler, seine eigene Route mit YAML zu registrieren.
  • CRUD sofort einsatzbereit.
  • Zusätzliche Middleware für Ihre Routen.
  • Einfaches Modul für allgemeine Informationen.

5. Konfigurierbare Routen

Konfigurieren Sie spezifische RouteEnhancers in den Seiteneigenschaften für die URL-Behandlung.

6. Sprechende URL-Fragmente (Anker)

Fügt ein Slug-Feld für menschenlesbare Anker ("domain.com/page/#my-section") zu TYPO3-Inhaltselementen hinzu. Standardmäßig wird dieser Anker als id-Attribut des Header gerendert.

# Vor
https://www.t3planet.com/page/#c123

# Nach
https://www.t3planet.com/page/#section-of-interest

7. T3AI TYPO3 KI Erweiterung

Während TYPO3-Routing-Erweiterungen bei der URL-Struktur und der Navigation der Website helfen, bietet die T3AI TYPO3 AI Erweiterung intelligente Werkzeuge zur Verwaltung und Optimierung von Inhalten in TYPO3. Mit Funktionen zur Unterstützung bei der Inhaltserstellung, Übersetzung und SEO sorgt T3AI dafür, dass jede geroutete Seite sowohl für die Nutzerinteraktion als auch für Suchmaschinen optimiert ist. Ein zusätzliches Feature in T3AI: Sie können den Seitenslug direkt mit der T3AI-Erweiterung bearbeiten und generieren – einfach klicken und mit KI erstellen

Tipp 1. Wie migriert man von EXT:realurl zum Routing?

Wenn Sie Ihr Projekt z.B. von TYPO3 v8 auf v9 mit der alten TYPO3 realurl-Extension upgraden, dann empfehle ich dringend, von EXT:realurl auf die Routing-Funktion des TYPO3-Kerns zu migrieren.

Es wurde ein Upgrade-Assistent bereitgestellt, der sich um die Generierung von Slugs für alle vorhandenen Seiten kümmert. Wenn Sie zuvor RealURL verwendet haben, versucht der Assistent, die RealURL-Caches zu verwenden, um passende Slugs zu generieren. Dies wird jedoch nicht in allen Fällen erfolgreich sein, und Sie sollten die generierten Slugs erneut überprüfen, wenn Sie möchten, dass die URL-Struktur nach einem Upgrade gleich bleibt.
Für Ihre eigenen TYPO3 extensions müssen Sie die Datenbank wie unten beschrieben manuell aktualisieren.

 

# Database SQL Queries
UPDATE tx_table_name AS n JOIN tx_realurl_uniqalias AS r ON (n.uid = r.value_id AND r.tablename = 'tx_table_name') SET n.slug = r.value_alias WHERE (n.slug IS NULL OR n.slug = '');

Eines möchte ich sagen: "Herzlichen Dank an Dmitry Dulepov" für seine engagierte Arbeit und Unterstützung der RealURL TYPO3 Extension für ein Jahr. EXT:realurl war eine der großartigen TYPO3 Extension, die uns sehr hilft.

Tipp 2. Verwenden Sie die Funktion "Importe"

Eine Routing-Konfiguration (und die Site-Konfiguration im Allgemeinen) kann schnell ziemlich lang werden, Sie sollten in Ihrer YAML-Konfiguration den Import nutzen, der es Ihnen erlaubt, Routing-Konfigurationen aus verschiedenen Dateien und mit verschiedenen Erweiterungen hinzuzufügen.

 

# Config.yaml
imports:
   - { resource: "EXT:myblog/Configuration/Routes/Default.yaml" }
   - { resource: "EXT:mynews/Configuration/Routes/Default.yaml" }
   - { resource: "EXT:template/Configuration/Routes/Default.yaml" }

 

Tipp 3. Fügen Sie einen Schrägstrich oder ein .html-Suffix am Ende von URL

 

Sie können PageTypeSuffix einfach so konfigurieren, dass Sie .html am Ende der URL erhalten.

# Ergebnis
https:// t3planet .com/about

 

# Config.yaml
rootPageId: 7
base: 'https://mydomain.com/'
errorHandling: {  }
routes: {  }
routeEnhancers:
  PageTypeSuffix:
    type: PageType
    default: '.html'
    index: 'index'
    map:
      '.html': 0

Tipp 4. Wie setzt man statische Routen in TYPO3?

Statische Routen bieten eine Möglichkeit, scheinbar statische Inhalte auf einer Basis pro Standort zu erstellen. 

StaticText (Beispiel von Robots.txt)

 

routes:
 -
   route: robots.txt
   type: staticText
   content: "User-agent: *\r\nDisallow: /typo3/\r\nDisallow: /typo3_src/\r\nAllow: /typo3/sysext/frontend/Resources/Public/*\r\n"

TYPO3 URL (Example of Sitemapxml)
routes:
 -
   route: sitemap.xml
   type: uri
   source: 't3://page?uid=1&type=1533906435'
 -
   route: favicon.ico
   type: uri
   source: 't3://file?uid=77'

 

Tipp 5. Debugging-Route verbessert

Wenn es um die Auflösung geht, sind die PSR-15-Middleware "PageResolver" und der "PageRouter" ein guter Anfang beim Debugging.

 

typo3/sysext/core/Classes/Routing/PageRouter.php -> generateUri
typo3/sysext/extbase/Classes/Routing/ExtbasePluginEnhancer.php -> enhanceForGeneration

Tipp 6. Slug-Bearbeitung erhält automatische Umleitung

Denken Sie einfach daran, dass immer, wenn Sie einen Slug (von Seiten oder Datensätzen) bearbeiten, die alte URL automatisch auf "307 Redirect" gesetzt wird. Das ist nützlich in Produktionsumgebungen, verursacht aber unnötige Einträge in Entwicklungsumgebungen.

Tipp 7. Wie erstellt man TYPO3 Sitemap-Routing?

Sie können eine TYPO3-Sitemap mit PageTypeSuffix > PageType vorbereiten.

 

# Setup.typoscript
seo_sitemap = PAGE
seo_sitemap {
  typeNum = 1533906435
  config {
    cache_period = 900
    disableAllHeaderCode = 1
    admPanel = 0
    removeDefaultJS = 1
    removeDefaultCss = 1
    removePageCss = 
    additionalHeaders.10 {
      header = Content-Type:application/xml;charset=utf-8
    }
  }
  10 = USER
 10.userFunc = TYPO3\CMS\Seo\XmlSitemap\XmlSitemapRenderer->render
}
# Config.yaml

routeEnhancers:
  PageTypeSuffix:
    type: PageType
    map:
      sitemap.xml: 1533906435

Vielen Dank für die Lektüre dieses etwas langen TYPO3-Artikels.

Ich hoffe, dass Ihnen die grundlegenden bis fortgeschrittenen Fähigkeiten des TYPO3-Routings gefallen haben und Sie diese erkunden konnten. Lassen Sie mich kurz die wichtigsten Punkte zusammenfassen.

  • Die Grundstruktur von config.yaml verstehen, die über das Backend-Modul Site Management verwaltet wird.
  • Das URL-Segment können Sie ganz einfach unter Seite > Eigenschaft bearbeiten konfigurieren.
  • Lernen und erforschen Sie TYPO3 Enhancer und TYPO3-Aspekt

Gibt es Probleme bei der Konfiguration des TYPO3-Routings? Ich bin Ihnen gerne behilflich, Fragen können Sie gerne in das Kommentarfeld schreiben.

Haben Sie ein glückliches TYPO3-Routing!

Your One-Stop Solutions for Custom TYPO3 Development

  • A Decade of TYPO3 Industry Experience
  • 350+ Successful TYPO3 Projects
  • 87% Repeat TYPO3 Customers
TYPO3 Service
wolfgang weber

Post a Comment

×

  • user
    Lamar 2026-03-07 Beim 9:55 am
    https://my-pet-extra.store/
    At this moment I am going away to do my breakfast, afterward having my breakfast coming yet again to read additional news.https://my-pet-extra.store/
  • user
    Lon 2026-02-28 Beim 1:47 pm
    https://w.pinpointer.net/selectItem.do?url=http%3a%2f%2fmy-pet-extra.store/
    Truly when someone doesn't understand after that its up to other users that they will
    help, so here it takes place.https://w.pinpointer.net/selectItem.do?url=http%3a%2f%2fmy-pet-extra.store/
  • user
    Nelson 2026-02-20 Beim 2:02 pm
    https://my-pet-extra.store/
    I've been surfing online more than three hours today, yet I never found any
    interesting article like yours. It is pretty worth enough for me.
    In my view, if all web owners and bloggers made
    good content as you did, the web will be a lot more useful than ever before.https://my-pet-extra.store/
  • user
    Darlene 2026-02-20 Beim 7:15 am
    https://my-pet-extra.store/
    I was recommended this website by my cousin. I'm not sure
    whether this post is written by him as no one
    else know such detailed about my problem. You're amazing!

    Thanks!https://my-pet-extra.store/
  • user
    Katrice 2026-02-19 Beim 10:53 pm
    https://my-pet-extra.store/
    This website definitely has all the information I wanted about this subject
    and didn't know who to ask. https://my-pet-extra.store/
  • user
    Cheryle 2026-02-18 Beim 8:57 pm
    https://my-pet-extra.store/
    whoah this weblog is fantastic i really like reading your articles.
    Stay up the good work! You realize, many people
    are hunting around for this info, you could aid them greatly.
    https://my-pet-extra.store/
  • user
    Tessa 2026-02-16 Beim 10:46 am
    https://my-pet-extra.store/
    Its like you read my mind! You seem to know a lot about this, like you wrote the book in it or something.
    I think that you could do with some pics to drive
    the message home a little bit, but instead of that, this is great blog.
    An excellent read. I'll definitely be back.https://my-pet-extra.store/
  • user
    Amanda 2026-02-10 Beim 6:43 pm
    https://my-pet-extra.store/
    You actually make it seem so easy with your presentation but I find this topic to be really something that I think I would never understand.
    It seems too complicated and very broad for me. I am
    looking forward for your next post, I'll try to get the hang of it!https://my-pet-extra.store/
  • user
    Mohamed 2026-02-10 Beim 2:26 am
    https://my-pet-extra.store/
    Hello there, I found your website via Google while searching for a related topic,
    your website got here up, it appears to be like great.
    I've bookmarked it in my google bookmarks.
    Hello there, simply become alert to your blog through Google,
    and found that it is truly informative. I am going to be careful for
    brussels. I'll appreciate if you proceed this in future.

    Lots of people shall be benefited out of your writing. Cheers!https://my-pet-extra.store/
  • user
    Bobby 2026-02-05 Beim 4:07 pm
    https://my-pet-extra.store/
    Asking questions are genuinely fastidious thing if you are not understanding anything fully, except this post provides pleasant understanding
    even.https://my-pet-extra.store/
  • user
    Latesha 2026-02-05 Beim 12:14 am
    https://avgust-opt.ru/bitrix/redirect.php?goto=https://my-pet-extra.store/
    We're a group of volunteers and opening a brand new scheme in our community.

    Your web site offered us with useful information to work on. You have done an impressive
    process and our whole community shall be thankful to you.https://avgust-opt.ru/bitrix/redirect.php?goto=https://my-pet-extra.store/
  • user
    Clarice 2026-02-04 Beim 11:40 pm
    https://my-pet-extra.store/
    Howdy just wanted to give you a quick heads up. The words in your article seem to be running off the screen in Opera.
    I'm not sure if this is a format issue or something to do with web browser
    compatibility but I figured I'd post to let you know.
    The design and style look great though! Hope you get the problem solved soon. Many
    thankshttps://my-pet-extra.store/
  • user
    Eve 2026-02-03 Beim 4:10 pm
    https://my-pet-extra.store/
    Currently it appears like BlogEngine is the preferred blogging platform out there right now.
    (from what I've read) Is that what you are using on your blog?https://my-pet-extra.store/
  • user
    Birgit 2026-02-03 Beim 3:12 pm
    https://ctrivergateway.org/wp-content/uploads/formidable/2/Costco-Travel-Complete-Guide.pdf
    It's a shame you don't have a donate button! I'd certainly donate to this fantastic blog!
    I suppose for now i'll settle for book-marking and adding your RSS feed to my Google
    account. I look forward to brand new updates and will share
    this blog with my Facebook group. Chat soon!
    https://ctrivergateway.org/wp-content/uploads/formidable/2/Costco-Travel-Complete-Guide.pdf
  • user
    Maddison 2026-02-03 Beim 3:49 am
    http://www.trailforums.com/t/how-to-contact-chase-travel-customer-service-ultimate-2026-guide/93135
    Greetings! I know this is kinda off topic nevertheless I'd figured I'd ask.
    Would you be interested in trading links or maybe guest writing a blog article or vice-versa?
    My site discusses a lot of the same subjects as yours and I think we could greatly benefit from each other.
    If you happen to be interested feel free to shoot me
    an email. I look forward to hearing from you! Fantastic blog by the way!


    http://www.trailforums.com/t/how-to-contact-chase-travel-customer-service-ultimate-2026-guide/93135
  • user
    Ollie 2025-12-16 Beim 8:52 pm
    https://my-pet-extra.store/
    I am sure this article has touched all the internet people, its really really pleasant piece of writing on building up new blog.https://my-pet-extra.store/
  • user
    Rosaria 2025-12-16 Beim 4:24 pm
    Sisters of the Valey | Merced, California | 209 626 6601
    http://clients1.google.com.mm/url?q=https://www.webwiki.it/sistersofthevalley.org

    Well-written post. I enjoyed the way you explained this topic,
    especially thee real-world takeaways around herbal remedies and holistic wellness.

    Thanks for sharing your perspective.
  • user
    Ginger 2025-12-16 Beim 1:41 pm
    Client Verge – CBD Digital Marketing Company & Cannabis Marketing Experts | 2967 Dundas St W #135D, Toronto, ON M6P
    1Z2, Canada | +18885010511
    http://www.lincolnnewsreporter.com/news/story/539560/client-verge-introduces-industryleading-6month-growth-guarantee-for-hemp-and-alternative-wellness-businesses.html

    Gret post. I enjoyed the way you covered this topic, esprcially the part about practical takeaways.
    Appreciate you for sharing your perspective.
  • user
    Pedro 2025-12-09 Beim 5:36 am
    Fantastic goods from you, man. I've remember your stuff previous
    to and you are just extremely magnificent. I actually like what you've received right
    here, certainly like what you're saying and the best way by which you are
    saying it. You're making it enjoyable and you continue
    to care for to stay it smart. I cant wait to learn far more from you.
    This is actually a tremendous site.Ārzemju kazino https://arzemjukazino.org/
  • user
    Birgit 2025-12-08 Beim 8:33 pm
    https://spelmani.com/ggbet/

    hey there and thank you for your information – I have definitely picked
    up something new from right here. I did however expertise a few technical points using this web site,
    as I experienced to reload the website lots of
    times previous to I could get it to load properly.

    I had been wondering if your web hosting is OK? Not that I am complaining, but slow loading instances times will very
    frequently affect your placement in google and could damage your quality score if
    advertising and marketing with Adwords. Well I am adding this RSS to my e-mail and can look out for much more of your respective
    interesting content. Make sure you update this again very soon.
    https://spelmani.com/ggbet/
  • user
    Marta 2025-12-08 Beim 8:14 pm
    I like the helpful info you provide in your articles.
    I'll bookmark your weblog and check again here frequently.
    I'm quite certain I'll learn lots of new stuff right
    here! Best of luck for the next!
    https://spelmani.com/arzemju-kazino/
  • user
    Sebastian 2023-07-14 Beim 2:51 pm
    I appreciate how well-researched and informative this blog post is.
  • user
    Sabrina Kuster 2023-07-14 Beim 2:51 pm
    Thank you for this insightful blog post on TYPO3 routing!