/
disallowrobots.go
44 lines (36 loc) · 954 Bytes
/
disallowrobots.go
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
package disallowrobots
import (
"log"
"os"
"net/http"
"github.com/codegangsta/negroni"
)
type DisallowRobots struct {
Env bool
Logger *log.Logger
}
func New(env bool) *DisallowRobots {
return &DisallowRobots{
Env: env,
Logger: log.New(os.Stdout, "[negroni disallow robots in production is enabled] ", 0),
}
}
func (dr *DisallowRobots) ServeHTTP(rw http.ResponseWriter, req *http.Request, next http.HandlerFunc) {
if dr.Env {
next(rw, req)
return
}
file := req.URL.Path
wh := rw.Header()
if file == "/robots.txt" {
wh.Set("User-Agent", "*\nDisallow: /")
wh.Set("Content-Type", "text/plain")
rw.WriteHeader(http.StatusOK)
return
}
newRw := negroni.NewResponseWriter(rw)
newRw.Before(func (rw negroni.ResponseWriter){
rw.Header().Set("X-Robots-Tag", "noindex, nofollow, noarchive")
})
next(newRw, req)
}