Friendly URLs

Apache

Es bedarf einer .htaccess Datei im Website Root um Rewrite Rules zu konfigurieren. Diese ist auch für ein funktionierendes Backend notwendig. Wenn sie nicht vorhanden ist kann sie kopiert werden aus typo3/sysext/install/Resources/Private/FolderStructureTemplateFiles/root-htaccess

Rewrites

Um nicht www zu www umzuschreiben:

# Redirect to www
RewriteCond %{HTTP_HOST} ^hostname\.de$ [NC]
RewriteRule ^(.*)$ www.hostname.de/$1 [R=301,L]

Um SSL zu erzwingen:

# Force SSL per Domain
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^www\.hostname\.de$ [NC]
RewriteRule ^(.*)$ www.hostname.de/$1 [R,L]

Um die Umgebung zu setzen - bei Development werden mehr Fehlermeldungen angezeigt:

# Development, Production
SetEnv TYPO3_CONTEXT Development

Erstellt: 07/2010| Geändert: 03/2023

URL Konfiguration ab TYPO3 Version 9

ab TYPO3 Version 9 gibt es die "Site Configuration" bzw "Seitenverwaltung". Die Konfiguration ist in der Datei typo3conf/sites/rootsystem/config.yaml abgelegt. Man kann diese auch direkt editieren.

routeEnhancers

Interessant sind hier vor allen die routeEnhancers, diese kann man nur direkt in der Datei konfigurieren. Hier einige Beispiele:

Sitemap

Um die Sitemap unter hostname.de/sitemap.xml zu erreichen kann man folgendes konfigurieren:

routeEnhancers:
  PageTypeSuffix:
    type: PageType
    default: ''
    map:
      /: 0
      feed.rss: 9818
      sitemap.xml: 1533906435

Trailing slash

um einen abschliessenden Slash an die URLs anzufügen kann man folgendes konfigurieren:

routeEnhancers:
  PageTypeSuffix:
    type: PageType
    default: /
    index: ''
    map:
      /: 0

News

Um die News Detailansicht mit lesbaren URLs zu konfigurieren:

routeEnhancers:
  NewsPlugin:
    type: Extbase
    extension: News
    plugin: Pi1
    routes:
      -
        routePath: '/aktuelles/{page}'
        _controller: 'News::list'
        _arguments:
          page: '@widget_0/currentPage'
      -
        routePath: '/tag/{tag_name}'
        _controller: 'News::list'
        _arguments:
          tag_name: overwriteDemand/tags
      -
        routePath: '/{news_title}'
        _controller: 'News::detail'
        _arguments:
          news_title: news
      -
        routePath: '/archiv/{year}/{month}'
        _controller: 'News::archive'
    defaultController: 'News::list'
    defaults:
      page: '1'
    aspects:
      news_title:
        type: PersistedAliasMapper
        tableName: tx_news_domain_model_news
        routeFieldName: path_segment
      page:
        type: StaticRangeMapper
        start: '1'
        end: '1000'

Erstellt: 07/2010| Geändert: 03/2023