diff --git a/_config.yml b/_config.yml index a107235..713143f 100644 --- a/_config.yml +++ b/_config.yml @@ -56,6 +56,11 @@ social: - https://github.com/szolkowski - https://world.optimizely.com/System/Users-and-profiles/Community-Profile-Card/?userId=7329f76b-c577-49d5-aa09-c8aff3c0610d +# Pretty post URLs. Post canonical URL becomes /YYYY/MM/DD/slug/ (no .html). +# Existing posts carry a redirect_from entry for their old /YYYY/MM/DD/slug.html +# URL so prior inbound links and Search Console results keep resolving. +permalink: /:year/:month/:day/:title/ + # Build settings remote_theme: pages-themes/architect@v0.2.0 plugins: diff --git a/_posts/2022-07-28-episerver-on-apple-silicon.md b/_posts/2022-07-28-episerver-on-apple-silicon.md index 7f5d332..95cc5a1 100644 --- a/_posts/2022-07-28-episerver-on-apple-silicon.md +++ b/_posts/2022-07-28-episerver-on-apple-silicon.md @@ -6,6 +6,8 @@ date: 2022-07-28 21:29:19 +0200 author: Stanisław Szołkowski comments: true published: true +redirect_from: + - /2022/07/28/episerver-on-apple-silicon.html image: path: assets/img/2022-07-28-episerver-on-apple-silicon-episerver-running-on-m1-1.png alt: "Optimizely Foundation site running in the CMS Edit view on an Apple Silicon (M1) Mac, showing the Mosey demo home page" diff --git a/_posts/2022-07-30-add-github-pipeline-to-epi-12.md b/_posts/2022-07-30-add-github-pipeline-to-epi-12.md index 316d070..3aa7bfe 100644 --- a/_posts/2022-07-30-add-github-pipeline-to-epi-12.md +++ b/_posts/2022-07-30-add-github-pipeline-to-epi-12.md @@ -6,7 +6,9 @@ date: 2022-07-30 17:31:48 +0200 author: Stanisław Szołkowski comments: true published: true -redirect_from: /2022/08/15/add-sonarcloud-to-epi-12-pipeline.html +redirect_from: + - /2022/08/15/add-sonarcloud-to-epi-12-pipeline.html + - /2022/07/30/add-github-pipeline-to-epi-12.html primary_tag: devops tags: - episerver diff --git a/_posts/2023-08-15-add-sonarcloud-to-epi-12-pipeline.md b/_posts/2023-08-15-add-sonarcloud-to-epi-12-pipeline.md index 28025a7..33a0673 100644 --- a/_posts/2023-08-15-add-sonarcloud-to-epi-12-pipeline.md +++ b/_posts/2023-08-15-add-sonarcloud-to-epi-12-pipeline.md @@ -6,6 +6,8 @@ date: 2023-08-15 19:31:48 +0200 author: Stanisław Szołkowski comments: true published: true +redirect_from: + - /2023/08/15/add-sonarcloud-to-epi-12-pipeline.html image: path: assets/img/2023-08-15-add-sonarcloud-to-epi-12-pipeline-ogimage.png alt: Add SonarCloud/SonarQube to Episerver/Optimizely 12 project title image diff --git a/_posts/2024-07-31-adding-hangfire-to-epi-12.md b/_posts/2024-07-31-adding-hangfire-to-epi-12.md index cce28cf..820cd9c 100644 --- a/_posts/2024-07-31-adding-hangfire-to-epi-12.md +++ b/_posts/2024-07-31-adding-hangfire-to-epi-12.md @@ -6,7 +6,9 @@ date: 2024-07-31 14:57:48 +0200 author: Stanisław Szołkowski comments: true published: true -redirect_from: /2024/07/11/adding-hangfire-to-epi-12.html +redirect_from: + - /2024/07/11/adding-hangfire-to-epi-12.html + - /2024/07/31/adding-hangfire-to-epi-12.html image: path: assets/img/2024-07-31-hangfire-cms-overview.png alt: Integrated Hangfire dashboard with Optimizely CMS back office diff --git a/_posts/2025-05-26-episerver-on-apple-silicon-2025.md b/_posts/2025-05-26-episerver-on-apple-silicon-2025.md index 63724d4..ffce839 100644 --- a/_posts/2025-05-26-episerver-on-apple-silicon-2025.md +++ b/_posts/2025-05-26-episerver-on-apple-silicon-2025.md @@ -6,6 +6,8 @@ date: 2025-05-26 10:00:00 +0200 author: Stanisław Szołkowski comments: true published: true +redirect_from: + - /2025/05/26/episerver-on-apple-silicon-2025.html image: path: assets/img/2025-05-26-cms-home-page.png alt: "Running full Optimizely development setup on M1 (ARM) based machine" diff --git a/_posts/2025-06-12-episerver-and-application-insights-filters.md b/_posts/2025-06-12-episerver-and-application-insights-filters.md index 2fe9f21..e234b48 100644 --- a/_posts/2025-06-12-episerver-and-application-insights-filters.md +++ b/_posts/2025-06-12-episerver-and-application-insights-filters.md @@ -15,6 +15,7 @@ primary_tag: application insights redirect_from: - /2025/06/12/episerver-and_application_insights_filters.html - /2025/06/12/episerver-and_application_insights_filters + - /2025/06/12/episerver-and-application-insights-filters.html tags: - episerver - optimizely diff --git a/_posts/2025-09-04-automatically-removing-orphaned-jobs-from-db.md b/_posts/2025-09-04-automatically-removing-orphaned-jobs-from-db.md index 61d0f47..5351de0 100644 --- a/_posts/2025-09-04-automatically-removing-orphaned-jobs-from-db.md +++ b/_posts/2025-09-04-automatically-removing-orphaned-jobs-from-db.md @@ -6,6 +6,8 @@ date: 2025-09-04 10:00:00 +0200 author: Stanisław Szołkowski comments: true published: true +redirect_from: + - /2025/09/04/automatically-removing-orphaned-jobs-from-db.html image: path: assets/img/2025-06-12-optimizely-scheduled-jobs-dashboard.png alt: "How to automatically remove orphaned Opti jobs from the DB" diff --git a/_posts/2025-10-08-quiet-performance-wins-scheduled-job-for-sql-index-maintenance-in-optimizely.md b/_posts/2025-10-08-quiet-performance-wins-scheduled-job-for-sql-index-maintenance-in-optimizely.md index 3d3ceeb..4d0bd87 100644 --- a/_posts/2025-10-08-quiet-performance-wins-scheduled-job-for-sql-index-maintenance-in-optimizely.md +++ b/_posts/2025-10-08-quiet-performance-wins-scheduled-job-for-sql-index-maintenance-in-optimizely.md @@ -8,6 +8,7 @@ comments: true published: true redirect_from: - /2025/10/08/Quiet-Performance-Wins-Scheduled-Job-for-SQL-Index-Maintenance-in-Optimizely.html + - /2025/10/08/quiet-performance-wins-scheduled-job-for-sql-index-maintenance-in-optimizely.html image: path: assets/img/2025-10-08-quiet-performance-wins-scheduled-job-for-sql-index-maintenance-in-optimizely.jpeg alt: "Quiet Performance Wins: Scheduled Job for SQL Index Maintenance in Optimizely" diff --git a/_posts/2026-02-18-memory-efficient-catalog-traversal-in-optimizely-commerce-part-1-building-the-service.md b/_posts/2026-02-18-memory-efficient-catalog-traversal-in-optimizely-commerce-part-1-building-the-service.md index aea0356..faa947c 100644 --- a/_posts/2026-02-18-memory-efficient-catalog-traversal-in-optimizely-commerce-part-1-building-the-service.md +++ b/_posts/2026-02-18-memory-efficient-catalog-traversal-in-optimizely-commerce-part-1-building-the-service.md @@ -9,6 +9,7 @@ published: true redirect_from: - /2026/01/18/Memory-Efficient-Catalog-Traversal-in-Optimizely-Commerce-Part-1-Building-the-Service.html - /2026/02/18/Memory-Efficient-Catalog-Traversal-in-Optimizely-Commerce-Part-1-Building-the-Service.html + - /2026/02/18/memory-efficient-catalog-traversal-in-optimizely-commerce-part-1-building-the-service.html image: path: assets/img/2026-02-18-memory-efficient-catalog-traversal-in-optimizely-commerce-part-1-building-the-service.png alt: "Memory-Efficient Catalog Traversal in Optimizely Commerce. Part 1: Building the Service" diff --git a/_posts/2026-02-24-catalog-traversal-in-action-part-2-real-world-scheduled-job-patterns.md b/_posts/2026-02-24-catalog-traversal-in-action-part-2-real-world-scheduled-job-patterns.md index 02270b5..a456cec 100644 --- a/_posts/2026-02-24-catalog-traversal-in-action-part-2-real-world-scheduled-job-patterns.md +++ b/_posts/2026-02-24-catalog-traversal-in-action-part-2-real-world-scheduled-job-patterns.md @@ -8,6 +8,7 @@ comments: true published: true redirect_from: - /2026/02/24/Catalog-Traversal-in-Action-Part-2-Real-World-Scheduled-Job-Patterns.html + - /2026/02/24/catalog-traversal-in-action-part-2-real-world-scheduled-job-patterns.html image: path: assets/img/2026-02-24-catalog-traversal-in-action-part-2-real-world-scheduled-job-patterns.png alt: "Catalog Traversal in Action. Part 2: Real-World Scheduled Job Patterns" diff --git a/_posts/2026-03-03-catalog-traversal-with-hangfire-part-3-advanced-job-management.md b/_posts/2026-03-03-catalog-traversal-with-hangfire-part-3-advanced-job-management.md index 67374d2..ee7338b 100644 --- a/_posts/2026-03-03-catalog-traversal-with-hangfire-part-3-advanced-job-management.md +++ b/_posts/2026-03-03-catalog-traversal-with-hangfire-part-3-advanced-job-management.md @@ -8,6 +8,7 @@ comments: true published: true redirect_from: - /2026/03/03/Catalog-Traversal-with-Hangfire-Part-3-Advanced-Job-Management.html + - /2026/03/03/catalog-traversal-with-hangfire-part-3-advanced-job-management.html image: path: assets/img/2026-03-03-catalog-traversal-with-hangfire-part-3-advanced-job-management.png alt: "Catalog Traversal with Hangfire. Part 3: Advanced Job Management" diff --git a/_posts/2026-03-31-optipowertools-hangfire-a-drop-in-hangfire-integration-for-optimizely-cms-12.md b/_posts/2026-03-31-optipowertools-hangfire-a-drop-in-hangfire-integration-for-optimizely-cms-12.md index ffec848..b01d8ce 100644 --- a/_posts/2026-03-31-optipowertools-hangfire-a-drop-in-hangfire-integration-for-optimizely-cms-12.md +++ b/_posts/2026-03-31-optipowertools-hangfire-a-drop-in-hangfire-integration-for-optimizely-cms-12.md @@ -8,6 +8,7 @@ comments: true published: true redirect_from: - /2026/03/31/OptiPowerTools.Hangfire-A-Drop-in-Hangfire-Integration-for-Optimizely-CMS-12.html + - /2026/03/31/optipowertools-hangfire-a-drop-in-hangfire-integration-for-optimizely-cms-12.html image: path: assets/img/2026-03-31-optipowertools-hangfire-dashboard.png alt: "OptiPowerTools.Hangfire: A Drop-in Hangfire Integration for Optimizely CMS 12" diff --git a/_posts/2026-04-09-optimizely-alloy-on-macos-apple-silicon.md b/_posts/2026-04-09-optimizely-alloy-on-macos-apple-silicon.md index 431f486..3b5fa8e 100644 --- a/_posts/2026-04-09-optimizely-alloy-on-macos-apple-silicon.md +++ b/_posts/2026-04-09-optimizely-alloy-on-macos-apple-silicon.md @@ -6,6 +6,8 @@ date: 2026-04-09 11:00:00 +0200 author: Stanisław Szołkowski comments: true published: true +redirect_from: + - /2026/04/09/optimizely-alloy-on-macos-apple-silicon.html image: path: assets/img/2026-04-09-optimizely-alloy-on-macos-apple-silicon.png alt: "Running the Optimizely CMS 13 Alloy Site on macOS with Docker" diff --git a/_posts/2026-04-13-optipowertools-hangfire-2-0-cms-13-support.md b/_posts/2026-04-13-optipowertools-hangfire-2-0-cms-13-support.md index 9fcac78..3de086a 100644 --- a/_posts/2026-04-13-optipowertools-hangfire-2-0-cms-13-support.md +++ b/_posts/2026-04-13-optipowertools-hangfire-2-0-cms-13-support.md @@ -8,6 +8,7 @@ comments: true published: true redirect_from: - /2026/04/13/OptiPowerTools-Hangfire-2.0-CMS-13-Support.html + - /2026/04/13/optipowertools-hangfire-2-0-cms-13-support.html image: path: assets/img/2026-04-13-optipowertools-hangfire-2-0-0.png alt: "OptiPowerTools.Hangfire 2.0.0: CMS 13 Support and Sample Jobs" diff --git a/tests/__snapshots__/post.spec.ts/structure.json b/tests/__snapshots__/post.spec.ts/structure.json index 20d660d..272764f 100644 --- a/tests/__snapshots__/post.spec.ts/structure.json +++ b/tests/__snapshots__/post.spec.ts/structure.json @@ -2,7 +2,7 @@ "meta": { "title": "OptiPowerTools.Hangfire 2.0.0: CMS 13 Support and Sample Jobs | Szołkowski’s Blog", "description": "OptiPowerTools.Hangfire 2.0 adds Optimizely CMS 13 / .NET 10 support and ships ready-to-run sample jobs to shorten Hangfire setup on Optimizely projects.", - "canonical": "https://szolkowski.github.io/2026/04/13/optipowertools-hangfire-2-0-cms-13-support.html", + "canonical": "https://szolkowski.github.io/2026/04/13/optipowertools-hangfire-2-0-cms-13-support/", "ogTitle": "OptiPowerTools.Hangfire 2.0.0: CMS 13 Support and Sample Jobs", "ogDescription": "OptiPowerTools.Hangfire 2.0 adds Optimizely CMS 13 / .NET 10 support and ships ready-to-run sample jobs to shorten Hangfire setup on Optimizely projects.", "ogImage": "https://szolkowski.github.io/assets/img/2026-04-13-optipowertools-hangfire-2-0-0.png", diff --git a/tests/post.spec.ts b/tests/post.spec.ts index 7b6dd0e..ef43e8e 100644 --- a/tests/post.spec.ts +++ b/tests/post.spec.ts @@ -8,7 +8,7 @@ import { } from './fixtures'; const POST_PATH = - '/2026/04/13/optipowertools-hangfire-2-0-cms-13-support.html'; + '/2026/04/13/optipowertools-hangfire-2-0-cms-13-support/'; test.describe(`post page (${POST_PATH})`, () => { test('invariants: BlogPosting + BreadcrumbList, canonical, og:image, description', async ({