blob: ecb3397caa04b1bc108209eaadbc96110530fccc [file] [log] [blame]
// 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",
}