Skip to content

Conversation

@devin-ai-integration
Copy link
Contributor

Add permanent redirects for RSS feed URLs

Summary

Added three permanent redirects for RSS feed URLs to maintain backwards compatibility with the old changelog RSS feed paths:

  • TypeScript SDK changelog RSS: /learn/sdks/introduction/changelog/ts.rss/learn/sdks/generators/typescript/changelog.rss
  • C# SDK changelog RSS: /learn/sdks/introduction/changelog/csharp.rss/learn/sdks/generators/csharp/changelog.rss
  • CLI reference changelog RSS: /learn/cli-reference/changelog.rss/learn/cli-api-reference/cli-reference/changelog.rss

These redirects follow the same pattern as the existing non-RSS changelog redirects already in the file.

Review & Testing Checklist for Human

  • Verify the destination RSS feed URLs actually exist and serve valid RSS content
  • Test that the redirects work correctly after deployment (old URLs should redirect to new ones)
  • Consider if there are other RSS feed URLs that need redirects (user mentioned they weren't sure about other old RSS URLs they didn't subscribe to)

Notes

@devin-ai-integration
Copy link
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@github-actions
Copy link
Contributor

@Swimburger
Copy link
Member

The redirects are not working. I get the following back instead of a redirect:

Request URL
https://fern-preview-ed17d636-cd62-49b6-83b9-5af9af9ea97a.docs.buildwithfern.com/learn/sdks/introduction/changelog/ts.rss
Request Method
GET
Status Code
200 OK
Remote Address
18.238.80.44:443
Referrer Policy
strict-origin-when-cross-origin

HTML content

Maybe the order of the redirects matter here, move them before the wildcard

The RSS feed redirects were being caught by the wildcard changelog redirects
because they were placed after them. Moved the RSS redirects before the
wildcard redirects so they match first.

Co-Authored-By: Niels Swimberghe <[email protected]>
@github-actions
Copy link
Contributor

@devin-ai-integration
Copy link
Contributor Author

I've moved the RSS redirects before the wildcard redirects as you suggested. However, after testing, I'm finding that the old RSS URLs are still not redirecting correctly.

Test Results:

All three destination RSS feeds exist and work correctly:

  • /learn/sdks/generators/typescript/changelog.rss → 200, application/rss+xml
  • /learn/sdks/generators/csharp/changelog.rss → 200, application/rss+xml
  • /learn/cli-api-reference/cli-reference/changelog.rss → 200, application/rss+xml

However, when accessing the old URLs:

  • /learn/sdks/introduction/changelog/ts.rss → 200, text/html, redirects to /learn
  • The response header shows x-matched-path: /[host]/[domain]/static/[slug]

Root Cause:

The .rss files appear to be caught by a static file handler before the redirect rules in docs.yml are evaluated. The x-matched-path header shows they're being routed through /static/[slug] rather than going through the redirect layer.

Question:

Is there a different way to configure redirects for .rss files in Fern's documentation system? Or do RSS redirects need to be handled differently than regular page redirects?

Moved RSS feed redirects to the very top of the redirects list to ensure
they are evaluated before any static file handlers. Also added:
- Trailing slash variants (ts.rss/, csharp.rss/)
- Parameterized extension variants (ts.:ext, csharp.:ext)

This attempts to work around the issue where .rss files are being caught
by a static file handler (x-matched-path: /[host]/[domain]/static/[slug])
before the redirect rules are evaluated.

Co-Authored-By: Niels Swimberghe <[email protected]>
@github-actions
Copy link
Contributor

@devin-ai-integration
Copy link
Contributor Author

Update: RSS Redirects Still Not Working

I've tried multiple approaches to make the RSS redirects work, but they're still being caught by a static file handler before the redirect rules are evaluated.

Attempts Made:

  1. ✅ Moved RSS redirects before wildcard redirects
  2. ✅ Moved RSS redirects to the very top of the redirects list
  3. ✅ Added trailing slash variants (ts.rss/, csharp.rss/)
  4. ✅ Added parameterized extension variants (ts.:ext, csharp.:ext)

Test Results:

Even with all these changes, the old RSS URLs still return:

  • ❌ HTTP 200 (not a redirect status)
  • content-type: text/html (not RSS)
  • location: /learn (wrong destination)
  • x-matched-path: /[host]/[domain]/static/[slug] (static handler)

Meanwhile, the destination RSS feeds work perfectly:

  • /learn/sdks/generators/typescript/changelog.rss → 200, application/rss+xml
  • /learn/sdks/generators/csharp/changelog.rss → 200, application/rss+xml
  • /learn/cli-api-reference/cli-reference/changelog.rss → 200, application/rss+xml

And the non-RSS changelog redirects work correctly:

  • /learn/sdks/introduction/changelog/ts/ → 308 redirect to /learn/sdks/generators/typescript/changelog

Root Cause:

The evidence strongly suggests that .rss files are routed through a static file handler that runs before the docs.yml redirect rules are evaluated. This appears to be a platform-level behavior in Fern's documentation system.

Question:

Is there a different way to configure RSS feed redirects in Fern's system? Or does this need to be handled at a different level (e.g., Vercel configuration, Next.js rewrites, or Fern platform configuration)?

@Swimburger - Do you know if there's a way to make RSS redirects work, or should this be escalated to the Fern platform team?

@Swimburger Swimburger closed this Nov 3, 2025
@Swimburger Swimburger deleted the devin/1761867584-add-rss-redirects branch November 3, 2025 17:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants