aboutsummaryrefslogtreecommitdiff
path: root/rewrite.go
blob: ecb3397caa04b1bc108209eaadbc96110530fccc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// 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",
}