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.
Optimering af statiske filer
Sektion kaldt “Optimering af statiske filer”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.
Konfiguration
Sektion kaldt “Konfiguration”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.
Grundlæggende konfiguration
Sektion kaldt “Grundlæggende konfiguration”| 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. |
Sitemap Konfiguration
Sektion kaldt “Sitemap Konfiguration”| 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. |
Sitemap Egenskaber i Umbraco
Sektion kaldt “Sitemap Egenskaber i Umbraco”| 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 |
Test og Udvikling
Sektion kaldt “Test og Udvikling”| 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 |
Caching og Kompression
Sektion kaldt “Caching og Kompression”| 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"Omdirigering og URL-håndtering
Sektion kaldt “Omdirigering og URL-håndtering”| 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/" ] } } }}Appsettings schema
Sektion kaldt “Appsettings schema”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.