From 18f2b5e6be59f9087e52612daf88884dc01b862c Mon Sep 17 00:00:00 2001 From: Kilian Schulte Date: Thu, 23 Jul 2026 19:29:25 +0200 Subject: [PATCH 1/3] add blog redirects --- sites/blog_redirects/.firebaserc | 15 +++++ sites/blog_redirects/firebase.json | 90 ++++++++++++++++++++++++++ sites/blog_redirects/public/index.html | 13 ++++ 3 files changed, 118 insertions(+) create mode 100644 sites/blog_redirects/.firebaserc create mode 100644 sites/blog_redirects/firebase.json create mode 100644 sites/blog_redirects/public/index.html diff --git a/sites/blog_redirects/.firebaserc b/sites/blog_redirects/.firebaserc new file mode 100644 index 0000000000..5ce43125a4 --- /dev/null +++ b/sites/blog_redirects/.firebaserc @@ -0,0 +1,15 @@ +{ + "projects": { + "default": "flutter-dev-230821" + }, + "targets": { + "flutter-dev-230821": { + "hosting": { + "blog": [ + "flutter-blog" + ] + } + } + }, + "etags": {} +} \ No newline at end of file diff --git a/sites/blog_redirects/firebase.json b/sites/blog_redirects/firebase.json new file mode 100644 index 0000000000..0fb298e51b --- /dev/null +++ b/sites/blog_redirects/firebase.json @@ -0,0 +1,90 @@ +{ + "hosting": { + "target": "blog", + "public": "public", + "cleanUrls": true, + "trailingSlash": false, + "ignore": [ + "firebase.json", + "**/.*" + ], + "rewrites": [], + "redirects": [ + { + "source": "/flutter-2025-roadmap-f127882b117f", + "destination": "https://flutter.dev/blog/flutter-2025-roadmap-update", + "type": 301 + }, + { + "source": "/flutter-3-24-dart-3-5-204b7d20c45d", + "destination": "https://flutter.dev/blog/announcing-flutter-3-24-and-dart-3-5", + "type": 301 + }, + { + "source": "/flutter-beta-3-7d88125245dc", + "destination": "https://flutter.dev/blog/whats-new-in-flutter-beta-3", + "type": 301 + }, + { + "source": "/flutter-in-production-f9418261d8e1", + "destination": "https://flutter.dev/blog/celebrating-flutters-production-era", + "type": 301 + }, + { + "source": "/flutter-live-wrapup-57c535ef8994", + "destination": "https://flutter.dev/blog/flutter-1-0-launch-wrap-up", + "type": 301 + }, + { + "source": "/flutter-release-preview-1-943a9b6ee65a", + "destination": "https://flutter.dev/blog/announcing-flutter-release-preview-1", + "type": 301 + }, + { + "source": "/https-medium-com-flutter-io-announcing-flutters-beta-2-c85ba1557d5e", + "destination": "https://flutter.dev/blog/announcing-flutters-beta-2-release", + "type": 301 + }, + { + "source": "/https-medium-com-flutter-io-pitching-flutter-2d4f494e47d1", + "destination": "https://flutter.dev/blog/pitching-flutter-to-your-company-or-client", + "type": 301 + }, + { + "source": "/https-medium-com-flutter-issues-bugs-and-backlogs-5fb3adab5e25", + "destination": "https://flutter.dev/blog/issues-bugs-and-backlogs", + "type": 301 + }, + { + "source": "/io24-5e211f708a37", + "destination": "https://flutter.dev/blog/landing-flutter-3-22-and-dart-3-4-at-google-i-o-2024", + "type": 301 + }, + { + "source": "/null-safety-flutter-tech-preview-cb5c98aba187", + "destination": "https://flutter.dev/blog/dart-sound-null-safety-technical-preview-2", + "type": 301 + }, + { + "source": "/what-do-flutter-package-users-need-6ecba57ed1d6", + "destination": "https://flutter.dev/blog/what-do-flutter-package-users-need-findings-from-q2-user-survey", + "type": 301 + }, + { + "regex": "\/(.*)-([0-9a-f]{10,12})\/?", + "destination": "https://flutter.dev/blog/:1", + "type": 301 + }, + { + "source": "/", + "destination": "https://flutter.dev/blog", + "type": 301 + }, + { + "regex": "\/(.+)", + "destination": "https://flutter.dev/blog/:1", + "type": 301 + } + ] + } +} \ No newline at end of file diff --git a/sites/blog_redirects/public/index.html b/sites/blog_redirects/public/index.html new file mode 100644 index 0000000000..f7d8206ed9 --- /dev/null +++ b/sites/blog_redirects/public/index.html @@ -0,0 +1,13 @@ + + + + + Flutter Blog + + + + +

Redirecting...

+ + + \ No newline at end of file From 371c680ea49a9260581a06e2df8dcee69e139c9a Mon Sep 17 00:00:00 2001 From: Kilian Schulte Date: Mon, 27 Jul 2026 16:49:16 +0200 Subject: [PATCH 2/3] apply review --- sites/blog_redirects/.firebaserc | 2 +- sites/blog_redirects/README.md | 13 +++++++++++++ sites/blog_redirects/firebase.json | 2 +- sites/blog_redirects/public/index.html | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 sites/blog_redirects/README.md diff --git a/sites/blog_redirects/.firebaserc b/sites/blog_redirects/.firebaserc index 5ce43125a4..f530030ab5 100644 --- a/sites/blog_redirects/.firebaserc +++ b/sites/blog_redirects/.firebaserc @@ -12,4 +12,4 @@ } }, "etags": {} -} \ No newline at end of file +} diff --git a/sites/blog_redirects/README.md b/sites/blog_redirects/README.md new file mode 100644 index 0000000000..ed0fc65a8f --- /dev/null +++ b/sites/blog_redirects/README.md @@ -0,0 +1,13 @@ +# Blog Redirects + +This directory contains the Firebase Hosting configuration used to redirect +legacy Medium blog URLs (previously hosted at `blog.flutter.dev`) to the +official Flutter blog on `flutter.dev/blog`. + +## Overview + +- **`firebase.json`**: + Contains the redirect rules mapping specific legacy Medium URL patterns + and hash-suffixes to their corresponding paths under `flutter.dev/blog`. +- **`public/index.html`**: + A fallback page that redirects users to `flutter.dev/blog` via a meta refresh. diff --git a/sites/blog_redirects/firebase.json b/sites/blog_redirects/firebase.json index 0fb298e51b..751fbf0dbd 100644 --- a/sites/blog_redirects/firebase.json +++ b/sites/blog_redirects/firebase.json @@ -87,4 +87,4 @@ } ] } -} \ No newline at end of file +} diff --git a/sites/blog_redirects/public/index.html b/sites/blog_redirects/public/index.html index f7d8206ed9..b1256cccf9 100644 --- a/sites/blog_redirects/public/index.html +++ b/sites/blog_redirects/public/index.html @@ -10,4 +10,4 @@

Redirecting...

- \ No newline at end of file + From a1c395d02b4e86652b35ff3fa1ffe2f4c137cc47 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Mon, 27 Jul 2026 10:20:52 -0500 Subject: [PATCH 3/3] Minor clean up to README --- sites/blog_redirects/README.md | 11 ++++++----- sites/blog_redirects/public/index.html | 6 +++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/sites/blog_redirects/README.md b/sites/blog_redirects/README.md index ed0fc65a8f..cac2037efa 100644 --- a/sites/blog_redirects/README.md +++ b/sites/blog_redirects/README.md @@ -1,8 +1,8 @@ -# Blog Redirects +# Legacy blog redirects -This directory contains the Firebase Hosting configuration used to redirect -legacy Medium blog URLs (previously hosted at `blog.flutter.dev`) to the -official Flutter blog on `flutter.dev/blog`. +This directory contains the Firebase Hosting configuration used to +redirect legacy Medium blog URLs (previously hosted at `blog.flutter.dev`) to +the official Flutter blog at `flutter.dev/blog`. ## Overview @@ -10,4 +10,5 @@ official Flutter blog on `flutter.dev/blog`. Contains the redirect rules mapping specific legacy Medium URL patterns and hash-suffixes to their corresponding paths under `flutter.dev/blog`. - **`public/index.html`**: - A fallback page that redirects users to `flutter.dev/blog` via a meta refresh. + A fallback page that redirects users to `flutter.dev/blog` with + an immediate meta refresh. diff --git a/sites/blog_redirects/public/index.html b/sites/blog_redirects/public/index.html index b1256cccf9..6ab835b60c 100644 --- a/sites/blog_redirects/public/index.html +++ b/sites/blog_redirects/public/index.html @@ -2,12 +2,12 @@ - Flutter Blog - + Flutter Blog + -

Redirecting...

+

Redirecting to Flutter blog...