Gå til indhold

SEO

SEO pakken indeholder diverse standardopsætning ift. SEO, samt funktionalitet til generering af robots.txt filer og xml sitemaps.

Håndtering af redirects (trailing slashes og domæner)

Sektion kaldt “Håndtering af redirects (trailing slashes og domæner)”

Hvis Umbraco er sat op til at tilføje trailing slashes på url’er, sørger denne pakke også for automatisk at viderestille trafik uden trailing slashes til samme url med trailing slashes. Dette sker med statuskoden 308 (Permanent Redirect), og ikke 301 (Moved Permanently). Forskellen på 308 og 301, er at 308 beholder http metoden, fx. ville en 301 på et POST request ende med et GET request.

Pakken sørger for at der sættes cache headers på statiske filer, så browseren kan cache dem i op til 365 dage. Længden (og cachen i det hele taget, kan konfigureres). Ligeledes tilføjes brotli komprimering af statiske filer, så der ikke skal overføres så meget data fra server til browser.

Automatisk opsætning af attribute routing af controllers

Sektion kaldt “Automatisk opsætning af attribute routing af controllers”

Fordi controllerne til robots.txt og sitemap.xml genereringen benytter attribute routing, sætter pakken også den nødvendige opsætning op, som beskrevet i Umbracos dokumentation.

Du kan tilpasse SEO-funktionaliteten via SeoOptions. Dette kan gøres i din appsettings.json fil:

{
"Ecreo": {
"Essentials": {
"Seo": {
"EnableRobotsTxtGeneration": true,
"MaxRecordsPerSitemapXml": 50000,
}
}
}
}

I langt de fleste tilfælde er standardværdierne tilstrækkelige, og valgt ud fra et best practise synspunkt. Men du kan selvfølgelig have særlige behov i enkelte projekter.

Egenskab Type Standard Beskrivelse
EnableRobotsTxtGeneration bool true Læses af robots.txt-domænernes health check. Deaktiverer ikke endpointet eller genereringen.
EnableSitemapXmlGeneration bool true Læses ikke af den nuværende implementering og deaktiverer ikke sitemap-generering.
Egenskab Type Standard Beskrivelse
MaxRecordsPerSitemapXml int 50000 Maksimalt antal poster i en enkelt sitemap XML fil. Hvis der er flere poster, oprettes der automatisk flere sitemap filer med et sitemap indeks. Det er en generel anbefaling ikke at have mere end 50.000 poster i et xml sitemap.
Egenskab Type Standard Beskrivelse
SitemapHidePropertyAlias string “umbracoSitemapHide” Alias for Umbraco-egenskaben, der bruges til at skjule en side i sitemap. Skal være en boolean værdi
SitemapChangeFreqPropertyAlias string “umbracoSitemapChangeFreq” Alias for Umbraco-egenskaben, der bruges til at angive ændringsfrekvensen for en side i sitemap. Skal være en string værdi
SitemapAllowedChangeFreqValues string[] [“never”, “yearly”, “monthly”, “weekly”, “daily”, “always”] Tilladte værdier for ændringsfrekvens-egenskaben. Bruges til at validere indholdet af potentielle ændringsfrekvens-egenskaber i en node
SitemapPriorityPropertyAlias string “umbracoSitemapPriority” Alias for Umbraco-egenskaben, der bruges til at angive prioriteten for en side i sitemap. Skal være en decimal værdi mellem 0.0 og 1.0
SitemapPriorityMin decimal 0.0M Minimumsværdi for sitemap-prioritet. Bruges til at validere prioritetsværdien i en node
SitemapPriorityMax decimal 1.0M Maksimumsværdi for sitemap-prioritet. Bruges til at validere prioritetsværdien i en node
Egenskab Type Standard Beskrivelse
TestHostNameEndings string[] [“.umbraco.io”, “.azurewebsites.net”, “.ecreo.net”, “.ecreodev.dk”, “.e-dev.dk”] Hostnavne-endelser, der bruges til test-sites. Disse domæner vil automatisk få specielle robots.txt regler, der forhindrer indeksering
Egenskab Type Standard Beskrivelse
CacheStaticFiles bool true Aktiverer eller deaktiverer browser-caching af statiske filer ved hjælp af cache-control header
CacheStaticFilesForDays int 365 Antal dage, statiske filer skal caches, hvis CacheStaticFiles er aktiveret
UseBrotliCompression bool true Aktiverer eller deaktiverer brotli-kompression af output
UseBrotliCompressionOnMimeTypes string[] Se nedenfor MIME-typer, der skal komprimeres med brotli, hvis UseBrotliCompression er aktiveret
UseResponseCompression bool true Aktiverer eller deaktiverer generel HTTP-svarkompression

Standard MIME-typer for Brotli-kompression

Sektion kaldt “Standard MIME-typer for Brotli-kompression”
"application/font-woff"
"application/font-woff2"
"font/woff2"
"image/jpeg"
"image/png"
"image/svg+xml"
"image/avif"
"image/webp"
"text/javascript"
"text/css"
"video/mp4"
Egenskab Type Standard Beskrivelse
RedirectToWwwForHostnames string[] [] Automatisk omdirigering til www. for de angivne hostnavne
UseHttpsRedirection bool true Aktiverer eller deaktiverer automatisk omdirigering fra HTTP til HTTPS
WhitelistPathsForAutoRedirects ISet new HashSet() Stier, der er whitelistet for automatiske omdirigeringer, vil blive udelukket fra automatiske omdirigeringer som f.eks. tilføjelse af efterfølgende skråstreger osv.

Eksempel på Konfiguration i appsettings.json

Sektion kaldt “Eksempel på Konfiguration i appsettings.json”
{
"Ecreo": {
"Essentials": {
"Seo": {
"EnableRobotsTxtGeneration": true,
"EnableSitemapXmlGeneration": true,
"MaxRecordsPerSitemapXml": 50000,
"TestHostNameEndings": [
".umbraco.io",
".azurewebsites.net",
".ecreo.net",
".ecreodev.dk"
],
"SitemapHidePropertyAlias": "umbracoSitemapHide",
"SitemapChangeFreqPropertyAlias": "umbracoSitemapChangeFreq",
"SitemapAllowedChangeFreqValues": [
"never",
"yearly",
"monthly",
"weekly",
"daily",
"always"
],
"SitemapPriorityPropertyAlias": "umbracoSitemapPriority",
"SitemapPriorityMin": 0.0,
"SitemapPriorityMax": 1.0,
"CacheStaticFiles": true,
"CacheStaticFilesForDays": 365,
"UseBrotliCompression": true,
"UseBrotliCompressionOnMimeTypes": [
"application/font-woff",
"application/font-woff2",
"font/woff2",
"image/jpeg",
"image/png",
"image/svg+xml",
"image/avif",
"image/webp",
"text/javascript",
"text/css",
"video/mp4"
],
"RedirectToWwwForHostnames": [
"dit-domæne.dk"
],
"UseHttpsRedirection": true,
"UseResponseCompression": true,
"WhitelistPathsForAutoRedirects": [
"/api/",
"/umbraco/"
]
}
}
}
}

UseHttpsRedirection og UseResponseCompression læses ikke af den nuværende implementering. Konfigurer de tilhørende middleware i projektet. Pakkens registrering af Brotli-provider styres af UseBrotliCompression.

WhitelistPathsForAutoRedirects matcher stier som præfikser uden hensyn til store og små bogstaver. /api matcher derfor også /apiary. Www-redirecten kører før denne whitelist.

PreventSetCookieOnCachedResponse kontrollerer eksisterende headers før næste middleware. Den fjerner kun Set-Cookie, når Cache-Control indeholder både public og max-age, og hele Content-Type matcher en værdi i PreventSettingCookiesForMimeTypes. Cookies tilføjet senere i pipeline bliver ikke fjernet.

Pakken leverer et JSON schema til IntelliSense. Se opsætning og konfigurationssektioner.