| // Copyright 2013 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package main |
| |
| import "net/http" |
| |
| // Register HTTP handlers that redirect old blog paths to their new locations. |
| func init() { |
| for p := range urlMap { |
| dest := "/" + urlMap[p] |
| http.HandleFunc(p, func(w http.ResponseWriter, r *http.Request) { |
| http.Redirect(w, r, dest, http.StatusMovedPermanently) |
| }) |
| } |
| } |
| |
| var urlMap = map[string]string{ |
| "/2010/03/go-whats-new-in-march-2010.html": "go-whats-new-in-march-2010", |
| "/2010/04/json-rpc-tale-of-interfaces.html": "json-rpc-tale-of-interfaces", |
| "/2010/04/third-party-libraries-goprotobuf-and.html": "third-party-libraries-goprotobuf-and", |
| "/2010/05/go-at-io-frequently-asked-questions.html": "go-at-io-frequently-asked-questions", |
| "/2010/05/new-talk-and-tutorials.html": "new-talk-and-tutorials", |
| "/2010/05/upcoming-google-io-go-events.html": "upcoming-google-io-go-events", |
| "/2010/06/go-programming-session-video-from.html": "go-programming-session-video-from", |
| "/2010/07/gos-declaration-syntax.html": "gos-declaration-syntax", |
| "/2010/07/share-memory-by-communicating.html": "share-memory-by-communicating", |
| "/2010/08/defer-panic-and-recover.html": "defer-panic-and-recover", |
| "/2010/09/go-concurrency-patterns-timing-out-and.html": "go-concurrency-patterns-timing-out-and", |
| "/2010/09/go-wins-2010-bossie-award.html": "go-wins-2010-bossie-award", |
| "/2010/09/introducing-go-playground.html": "introducing-go-playground", |
| "/2010/10/real-go-projects-smarttwitter-and-webgo.html": "real-go-projects-smarttwitter-and-webgo", |
| "/2010/11/debugging-go-code-status-report.html": "debugging-go-code-status-report", |
| "/2010/11/go-one-year-ago-today.html": "go-one-year-ago-today", |
| "/2011/01/go-slices-usage-and-internals.html": "go-slices-usage-and-internals", |
| "/2011/01/json-and-go.html": "json-and-go", |
| "/2011/03/c-go-cgo.html": "c-go-cgo", |
| "/2011/03/go-becomes-more-stable.html": "go-becomes-more-stable", |
| "/2011/03/gobs-of-data.html": "gobs-of-data", |
| "/2011/03/godoc-documenting-go-code.html": "godoc-documenting-go-code", |
| "/2011/04/go-at-heroku.html": "go-at-heroku", |
| "/2011/04/introducing-gofix.html": "introducing-gofix", |
| "/2011/05/gif-decoder-exercise-in-go-interfaces.html": "gif-decoder-exercise-in-go-interfaces", |
| "/2011/05/go-and-google-app-engine.html": "go-and-google-app-engine", |
| "/2011/05/go-at-google-io-2011-videos.html": "go-at-google-io-2011-videos", |
| "/2011/06/first-class-functions-in-go-and-new-go.html": "first-class-functions-in-go-and-new-go", |
| "/2011/06/profiling-go-programs.html": "profiling-go-programs", |
| "/2011/06/spotlight-on-external-go-libraries.html": "spotlight-on-external-go-libraries", |
| "/2011/07/error-handling-and-go.html": "error-handling-and-go", |
| "/2011/07/go-for-app-engine-is-now-generally.html": "go-for-app-engine-is-now-generally", |
| "/2011/09/go-image-package.html": "go-image-package", |
| "/2011/09/go-imagedraw-package.html": "go-imagedraw-package", |
| "/2011/09/laws-of-reflection.html": "laws-of-reflection", |
| "/2011/09/two-go-talks-lexical-scanning-in-go-and.html": "two-go-talks-lexical-scanning-in-go-and", |
| "/2011/10/debugging-go-programs-with-gnu-debugger.html": "debugging-go-programs-with-gnu-debugger", |
| "/2011/10/go-app-engine-sdk-155-released.html": "go-app-engine-sdk-155-released", |
| "/2011/10/learn-go-from-your-browser.html": "learn-go-from-your-browser", |
| "/2011/10/preview-of-go-version-1.html": "preview-of-go-version-1", |
| "/2011/11/go-programming-language-turns-two.html": "go-programming-language-turns-two", |
| "/2011/11/writing-scalable-app-engine.html": "writing-scalable-app-engine", |
| "/2011/12/building-stathat-with-go.html": "building-stathat-with-go", |
| "/2011/12/from-zero-to-go-launching-on-google.html": "from-zero-to-go-launching-on-google", |
| "/2011/12/getting-to-know-go-community.html": "getting-to-know-go-community", |
| "/2012/03/go-version-1-is-released.html": "go1", |
| "/2012/07/gccgo-in-gcc-471.html": "gccgo-in-gcc-471", |
| "/2012/07/go-videos-from-google-io-2012.html": "go-videos-from-google-io-2012", |
| "/2012/08/go-updates-in-app-engine-171.html": "go-updates-in-app-engine-171", |
| "/2012/08/organizing-go-code.html": "organizing-go-code", |
| "/2012/11/go-turns-three.html": "go-turns-three", |
| "/2013/01/concurrency-is-not-parallelism.html": "concurrency-is-not-parallelism", |
| "/2013/01/go-fmt-your-code.html": "go-fmt-your-code", |
| "/2013/01/the-app-engine-sdk-and-workspaces-gopath.html": "the-app-engine-sdk-and-workspaces-gopath", |
| "/2013/01/two-recent-go-talks.html": "two-recent-go-talks", |
| "/2013/02/getthee-to-go-meetup.html": "getthee-to-go-meetup", |
| "/2013/02/go-maps-in-action.html": "go-maps-in-action", |
| "/2013/03/two-recent-go-articles.html": "two-recent-go-articles", |
| "/2013/03/the-path-to-go-1.html": "the-path-to-go-1", |
| "/2013/05/go-11-is-released.html": "go-11-is-released.article", |
| "/2013/05/advanced-go-concurrency-patterns.html": "advanced-go-concurrency-patterns.article", |
| } |