Admin Panel
Das Admin Panel ist standardmäßig inaktiv. In der config.typoscript muss der Eintrag config.admPanel = 1 ergänzt werden:
config {
headerComment (
Seite erstellt von Klaus Hesbacher
Web: https://www.klaus-hesbacher.de
Mail: klaus.heba@web.de
)
admPanel = 1
}
Password Policies
Password Policies
Kann für Backend und Frontend separat konfiguriert werden. Die Konfiguration erfolgt in der ext_localconf.php oder in der additional.php:
$GLOBALS['TYPO3_CONF_VARS']['SYS']['passwordPolicies'] = [
'akoe' => [
'validators' => [
\TYPO3\CMS\Core\PasswordPolicy\Validator\CorePasswordValidator::class => [
'options' => [
'digitCharacterRequired' => true,
'lowerCaseCharacterRequired' => true,
'minimumLength' => 20,
'specialCharacterRequired' => true,
'upperCaseCharacterRequired' => true
]
]
]
]
];
$GLOBALS['TYPO3_CONF_VARS']['BE']['passwordPolicy'] = 'akoe';
$GLOBALS['TYPO3_CONF_VARS']['FE']['passwordPolicy'] = 'akoe';
E-Mail-Adresse im Quelltext kaschieren
In der config.typoscript ergänzen:
config {
spamProtectEmailAddresses = -6
#spamProtectEmailAddresses_atSubst = (=at=)
#spamProtectEmailAddresses_lastDotSubst = (#)
}
Robots.txt
Die Konfiguration erfolgt über die Site Settings im Backend. Unter „Static Routes“ eine robots.txt erstellen und den gewünschten Code einfügen.
XML-Sitemap
Voraussetzungen
- Im Site Set sollte in der
config.yamldie Abhängigkeit definiert sein - Extension SEO ist erforderlich
Konfiguration
Im Backend unter „Active TypoScript“ unter „pageNum“ den Code auslesen:
http://akoe.ddev.site/?type=1533906435
Um den Link zu sitemap.xml zu ändern, in der Site config.yaml folgendes einfügen (am besten nach der Root Page ID):
routeEnhancers:
PageTypeSuffix:
type: PageType
map:
sitemap.xml: 1533906435
CSS und JS mergen, komprimieren und GZIP aktivieren
Im config.typoscript folgendes ergänzen:
config {
# ... andere Konfigurationen
compressCSS = 1
concatenateCss = 1
compressJs = 1
concatenateJs = 1
}
[applicationContext == 'Development']
config {
compressCSS = 0
concatenateCss = 0
compressJs = 0
concatenateJs = 0
}
[END]
Für den Development Context kann die Kompression deaktiviert werden, was für das Entwickeln sinnvoll ist.
.htaccess Konfiguration
Unter akoe/public/.htaccess folgenden Block aktivieren (Rauten entfernen):
<FilesMatch "\.js\.gz">
AddType "text/javascript" .gz
</FilesMatch>
<FilesMatch "\.css\.gz">
AddType "text/css" .gz
</FilesMatch>
AddEncoding x-gzip .gz
Wichtig: In den Installation-Wide Options nach „compression“ suchen und beide Werte auf 9 setzen. Unbedingt testen, da dies nicht bei allen Serverkonfigurationen funktioniert.
Cache optimieren
In der config.typoscript ergänzen:
config {
cache_period = 604800
}
Im Backend können unter den Seiteneigenschaften unterschiedliche Cachezeiten eingestellt werden. Für das Impressum, wo es wenig Änderungen gibt, könnten auch höhere Werte genutzt werden.
Content Security Policies
Feature Toggles aktivieren
In den Settings folgende Einträge unter „Feature Toggles“ aktivieren:
- Security: frontend enforce content security policy
- Security: frontend report content security policy
CSP-Konfiguration
Neben der Site config.yaml eine Datei csp.yaml erstellen:
# Inherits default site-unspecific frontend policy mutations (enabled per default)
inheritDefault: true
mutations:
# Results in `default-src 'self'`
- mode: "set"
directive: "default-src"
sources:
- "'self'"
# Allow fonts from data URIs
- mode: extend
directive: 'font-src'
sources:
- 'data:'
Quelltext optimieren mit der Extension Sourceopt
Installation via Composer
ddev composer require lochmueller/sourceopt
in der setup.typoscript ergänzen
@import "EXT:sourceopt/Configuration/TypoScript/setup.typoscript"
Ein constants.typoscript erstellen
@import "EXT:sourceopt/Configuration/TypoScript/constants.typoscript"
sourceopt.formatHtml = 1
[applicationContext == 'Development']
#sourceopt.enabled = 0
sourceopt.formatHtml = 4
[END]
Mit sourceopt.formatHtml wird das html in eine Zeile geschrieben. Über den Development Context kann man sich für das Entwickeln den Code lesbarer halten.
WebP automatisch konvertieren mit Image Jack
Installation via Composer
composer require "sitegeist/image-jack"
Vorbereitung
- Alle verarbeiteten Bilder über das Maintenance-Modul löschen
- Caches leeren
- Server-Konfiguration anpassen oder Fallback-Driver aktivieren
.htaccess Konfiguration
Nach RewriteEngine on einfügen:
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{REQUEST_FILENAME} (.*)\.(png|gif|jpe?g)$
RewriteCond %{REQUEST_FILENAME}\.webp -f
RewriteRule ^ %{REQUEST_FILENAME}\.webp [L,T=image/webp]
<IfModule mod_headers.c>
<FilesMatch "\.(png|gif|jpe?g)$">
Header append Vary Accept
</FilesMatch>
</IfModule>
Backend-Einstellungen
Under Settings → Extension Configuration folgende Optionen deaktivieren:
„Activate png processor“
„Only process images in processed folders“
„Activate jpeg processor“
Verarbeitung starten
ddev typo3 jack:process
Ausführen bis keine Bilder mehr gefunden werden.
Finale Schritte
- Frontend aufrufen und mehrere Seiten besuchen
- TYPO3 generiert dadurch neue Bilder und konvertiert sie automatisch
Die .htaccess-Regeln sorgen dafür, dass WebP-fähige Browser automatisch die WebP-Versionen der Bilder erhalten, während andere Browser die ursprünglichen Formate bekommen.