Redirect Index
How the redirects work
When a page moves from this repo to another subsite (e.g. the notes repo),
we place a small redirect stub in this redirects/ folder. Each stub has only
two lines of frontmatter:
---
permalink: /old/path
redirect_to: /new/path
---
Jekyll + jekyll-redirect-from generates a lightweight HTML page at the old
URL containing a JavaScript location redirect, an instant <meta refresh>,
a <link rel="canonical"> pointing to the new URL, and
<meta name="robots" content="noindex">. GitHub Pages serves this as a static
200 response — the redirect happens client-side. Google treats instant meta
refresh as a permanent redirect (confirmed in our 2026-03-19 test; see
CLAUDE.md for the full narrative).
The redirects/ folder uses no underscore prefix so Jekyll processes it
without needing an include directive in _config.yml.
How to validate redirects
Run through this checklist after creating or updating redirect stubs:
- Push the changes to both repos and wait for GitHub Pages builds to complete (usually 1-2 minutes).
- Curl each old URL and verify the response contains a redirect to the
expected target:
curl -s https://www.rmwinslow.com/OLD/PATH | grep 'location=' - Curl each new URL and verify the target page renders correctly:
curl -s https://www.rmwinslow.com/notes/NEW/PATH | grep '<title>' - Check for single hop — the redirect should go directly from the old URL to the new one with no intermediate step. If the target itself redirects, that’s a chain and should be fixed.
- Update this index — mark each entry as validated with a date.
How to handle post-migration moves
If a page is renamed or reorganized after migration:
- Add a new location entry to the page’s record in this index.
- Update the redirect stub’s
redirect_tovalue to point to the new URL. - If the page had a
redirect_fromin its frontmatter (e.g.twoperiod-endowment.md), make sure those old paths are still covered — either by the notes repo’s ownredirect_fromor by additional stubs here. - Re-validate using the procedure above.
Pre-migration checklist
Things to do during the migration itself, beyond just moving files and creating stubs:
- Rewrite frontmatter hierarchy. Done 2026-03-19.
topic-overview.mdis now a top-level parent (noparent: Notes), content pages droppedgrand_parent: Notes, and the phantom parents (_equilibrium.md,_measurement.md) now haveparent: Intermediate Macro Notes. - Remove
redirect_fromfromtwoperiod-endowment.md. Done 2026-03-19. The three legacy URLs are handled by redirect stubs in this repo. - Create
notes/index.md. Done 2026-03-19. - Delete
notes.mdfrom the main repo. Done 2026-03-19. - Update link in
teaching/3102.md. Done 2026-03-19. Changed to/notes/3102/topic-overview. - Fix hardcoded URL in
measurement-money-slides.md. Done 2026-03-19. Changed to a relative path (img-money-snails.webp). - Fix placeholder in
measurement-gdp.md— containsIMAGEURLHEREas a broken image reference (noted inclaude_audits.md). - Verify
math: mathjaxworks for all pages. The notes repo config sets this site-wide. The graphs pages load KaTeX explicitly — check for conflicts post-migration.
Migration inventory
Each page’s location history is listed chronologically. The entry tagged
[pre-migration] is the URL that needs a redirect stub in this repo. The
entry tagged [current] is where the page lives now. After migration, update
[current] tags accordingly.
Pages are grouped by their nav hierarchy. Assets (images, YML configs, Highcharts HTML, PDFs) move with their parent pages and don’t need individual redirect stubs since they aren’t in the Jekyll nav or search index.
Files starting with _ (underscore) are excluded from Jekyll’s build by
default — they never generate URLs and don’t need redirect stubs. They’re
tracked here for completeness but grouped separately.
Top-level nav page
Notes
RMWinslow.github.io/notes.md→/notes(original)RMWinslow.github.io/notes_temp.md→/notes_temp(temporary rename for redirect test, 2026-03-19)RMWinslow.github.io/notes.md→/notes(renamed back, 2026-03-19)[pre-migration]notes/index.md→/notes/[current]- Not migrated — replaced. The notes repo deploys at
/notes/and its ownindex.mdtakes over this URL. During migration, deletenotes.mdfrom the main repo. No redirect stub needed — verify that/notesresolves correctly once the notes repo is deployed. - Content to carry over: The current
notes.mdsays “Here you can find my notes on teaching or other economic subjects.” The notes repo’sindex.mdshould incorporate this (or an updated version) as its landing page content.
Parent pages (second level in notes repo)
Intermediate Macro Notes
RMWinslow.github.io/3102/topic-overview.md→/3102/topic-overview[pre-migration]notes/3102/topic-overview.md→/notes/3102/topic-overview[current]- Redirect stub:
redirects/3102-topic-overview.md - has_children: true
Content pages
Bank Runs (Diamond-Dybvig)
RMWinslow.github.io/3102/diamond.md→/3102/diamond[pre-migration]notes/3102/diamond.md→/notes/3102/diamond[current]- Redirect stub:
redirects/3102-diamond.md
McCall Job Search
RMWinslow.github.io/3102/jobsearch.md→/3102/jobsearch[pre-migration]notes/3102/jobsearch.md→/notes/3102/jobsearch[current]- Redirect stub:
redirects/3102-jobsearch.md
Constrained Optimization
RMWinslow.github.io/3102/math-lagrangian.md→/3102/math-lagrangian[pre-migration]notes/3102/math-lagrangian.md→/notes/3102/math-lagrangian[current]- Redirect stub:
redirects/3102-math-lagrangian.md
Business Cycles
RMWinslow.github.io/3102/measurement-cylical.md→/3102/measurement-cylical[pre-migration]notes/3102/measurement-cylical.md→/notes/3102/measurement-cylical[current]- Redirect stub:
redirects/3102-measurement-cylical.md
Gross Domestic Product
RMWinslow.github.io/3102/measurement-gdp.md→/3102/measurement-gdp[pre-migration]notes/3102/measurement-gdp.md→/notes/3102/measurement-gdp[current]- Redirect stub:
redirects/3102-measurement-gdp.md
Labor Aggregates
RMWinslow.github.io/3102/measurement-labor.md→/3102/measurement-labor[pre-migration]notes/3102/measurement-labor.md→/notes/3102/measurement-labor[current]- Redirect stub:
redirects/3102-measurement-labor.md
Money Concepts
RMWinslow.github.io/3102/measurement-money.md→/3102/measurement-money[pre-migration]notes/3102/measurement-money.md→/notes/3102/measurement-money[current]- Redirect stub:
redirects/3102-measurement-money.md
Prices
RMWinslow.github.io/3102/measurement-prices.md→/3102/measurement-prices[pre-migration]notes/3102/measurement-prices.md→/notes/3102/measurement-prices[current]- Redirect stub:
redirects/3102-measurement-prices.md
National Savings
RMWinslow.github.io/3102/measurement-savings.md→/3102/measurement-savings[pre-migration]notes/3102/measurement-savings.md→/notes/3102/measurement-savings[current]- Redirect stub:
redirects/3102-measurement-savings.md
Representative Consumer
RMWinslow.github.io/3102/oneperiod-consumer.md→/3102/oneperiod-consumer[pre-migration]notes/3102/oneperiod-consumer.md→/notes/3102/oneperiod-consumer[current]- Redirect stub:
redirects/3102-oneperiod-consumer.md
One Period Equilibrium
RMWinslow.github.io/3102/oneperiod-equilibrium.md→/3102/oneperiod-equilibrium[pre-migration]notes/3102/oneperiod-equilibrium.md→/notes/3102/oneperiod-equilibrium[current]- Redirect stub:
redirects/3102-oneperiod-equilibrium.md
Representative Producer
RMWinslow.github.io/3102/oneperiod-producer.md→/3102/oneperiod-producer[pre-migration]notes/3102/oneperiod-producer.md→/notes/3102/oneperiod-producer[current]- Redirect stub:
redirects/3102-oneperiod-producer.md
Two Period Agents with Production
RMWinslow.github.io/3102/twoperiod-agents.md→/3102/twoperiod-agents[pre-migration]notes/3102/twoperiod-agents.md→/notes/3102/twoperiod-agents[current]- Redirect stub:
redirects/3102-twoperiod-agents.md
Credit Market Imperfections
RMWinslow.github.io/3102/twoperiod-creditfrictions.md→/3102/twoperiod-creditfrictions[pre-migration]notes/3102/twoperiod-creditfrictions.md→/notes/3102/twoperiod-creditfrictions[current]- Redirect stub:
redirects/3102-twoperiod-creditfrictions.md
Two-Period Endowment Economy
RMWinslow.github.io/3102/twoperiod-endowment.md→/3102/twoperiod-endowment[pre-migration]notes/3102/twoperiod-endowment.md→/notes/3102/twoperiod-endowment[current]- Redirect stub:
redirects/3102-twoperiod-endowment.md - Pre-existing redirects: This page has
redirect_fromin its frontmatter covering three legacy URLs:/twoperiod-consumer/,/3102/twoperiod-consumer/, and/twoperiod-consumer. These need to be preserved — either keep them in the notes repo’s frontmatter (to redirect within the notes site) or add stubs here for each. Since the old URLs are on the main domain, stubs here are needed:redirects/twoperiod-consumer.md(permalink:/twoperiod-consumer→/notes/3102/twoperiod-endowment)redirects/3102-twoperiod-consumer.md(permalink:/3102/twoperiod-consumer→/notes/3102/twoperiod-endowment)
Two Period Equilibrium
RMWinslow.github.io/3102/twoperiod-equilibrium.md→/3102/twoperiod-equilibrium[pre-migration]notes/3102/twoperiod-equilibrium.md→/notes/3102/twoperiod-equilibrium[current]- Redirect stub:
redirects/3102-twoperiod-equilibrium.md
Exchange Rates
RMWinslow.github.io/3102/twoperiod-exchangerates.md→/3102/twoperiod-exchangerates[pre-migration]notes/3102/twoperiod-exchangerates.md→/notes/3102/twoperiod-exchangerates[current]- Redirect stub:
redirects/3102-twoperiod-exchangerates.md
Social Security
RMWinslow.github.io/3102/twoperiod-socialsecurity.md→/3102/twoperiod-socialsecurity[pre-migration]notes/3102/twoperiod-socialsecurity.md→/notes/3102/twoperiod-socialsecurity[current]- Redirect stub:
redirects/3102-twoperiod-socialsecurity.md
Small Open Economy
RMWinslow.github.io/3102/twoperiod-soe.md→/3102/twoperiod-soe[pre-migration]notes/3102/twoperiod-soe.md→/notes/3102/twoperiod-soe[current]- Redirect stub:
redirects/3102-twoperiod-soe.md
Money and Business Cycles
RMWinslow.github.io/3102/twoperiod-stickyprices.md→/3102/twoperiod-stickyprices[pre-migration]notes/3102/twoperiod-stickyprices.md→/notes/3102/twoperiod-stickyprices[current]- Redirect stub:
redirects/3102-twoperiod-stickyprices.md
Nav-hidden pages
These are excluded from the nav tree but still served. They need redirect stubs if anyone has bookmarked or linked to them.
3102 Graphs (kgjs)
RMWinslow.github.io/3102/graphs.md→/3102/graphs[pre-migration]notes/3102/graphs.md→/notes/3102/graphs[current]- Redirect stub:
redirects/3102-graphs.md - nav_exclude: true
3102 Graphs (Highcharts, old)
RMWinslow.github.io/3102/graphs2.md→/3102/graphs2[pre-migration]notes/3102/graphs2.md→/notes/3102/graphs2[current]- Redirect stub:
redirects/3102-graphs2.md - nav_exclude: true
Money Slides
RMWinslow.github.io/3102/measurement-money-slides.md→/3102/measurement-money-slides[pre-migration]notes/3102/measurement-money-slides.md→/notes/3102/measurement-money-slides[current]- Redirect stub:
redirects/3102-measurement-money-slides.md - nav_exclude: true, uses remark_slides layout
- Post-migration fix needed: Contains one hardcoded absolute URL
(
https://www.rmwinslow.com/3102/img-money-snails.webp) that will need updating to a relative path or the new/notes/prefix.
Pages not migrating to notes
Econ Electives
RMWinslow.github.io/econ/UMNelectives.md→/econ/UMNelectives- nav_exclude: true. Robert is no longer at UMN. This page stays in the main repo, hidden from nav. No redirect needed.
Underscore-prefixed files (excluded from Jekyll build, no redirect stubs)
Jekyll ignores files starting with _ by default — they are never built into
pages, so they have no URLs to redirect from. These are tracked here for
migration completeness. In the notes repo, they can be renamed (dropping the
underscore) once they’re ready to be published as real pages.
Competitive Equilibrium (_equilibrium.md)
RMWinslow.github.io/3102/_equilibrium.md— not built[pre-migration]notes/3102/_equilibrium.md— not built[current]- has_children: true (phantom — children to be wired up post-migration)
Aggregate Measurement (_measurement.md)
RMWinslow.github.io/3102/_measurement.md— not built[pre-migration]notes/3102/_measurement.md— not built[current]- has_children: true (phantom — children to be wired up post-migration)
Balance of Payment (_bop.md)
RMWinslow.github.io/3102/_bop.md— not built[pre-migration]notes/3102/_bop.md— not built[current]
Money (_money.md)
RMWinslow.github.io/3102/_money.md— not built[pre-migration]notes/3102/_money.md— not built[current]
_solow.md
RMWinslow.github.io/3102/_solow.md— not built[pre-migration]notes/3102/_solow.md— not built[current]- No YAML frontmatter at all — just a raw link dump.
Asset directories (move with content, no redirect stubs needed)
These directories contain images, data files, and interactive HTML that are referenced by the pages above. They move to the notes repo alongside the markdown files.
3102/graphs/— 10 YML config files for kgjs interactive graphs3102/highcharts/— 9 HTML files + 4 images for Highcharts graphs3102/img-money/— 17 images for the money concepts page3102/img-*.png,3102/img-*.svg,3102/img-*.webp— loose images3102/python graphs/— CSV data and Python scripts for generating figures3102/Ponzi.pdf— PDF referenced by one of the pages
Summary counts
- Total redirect stubs to create: 26
- 20 content pages
- 1 parent page (topic-overview)
- 3 nav-hidden pages (graphs, graphs2, money slides)
- 2 legacy alias stubs (twoperiod-consumer variants)
- Underscore-prefixed files (no stubs): 5 (not built by Jekyll)
- Pages staying in main repo: 1 (UMN Electives)
- Notes top-level: 1 (likely no stub needed — verify during migration)
- Asset files moving with content: 72 (no stubs needed)