Drop apt.buildd.debian.org
[mirror/dsa-puppet.git] / modules / roles / templates / static-mirroring / vhost / manpages.debian.org.erb
1 <Macro vstatic-vhost-extra-manpages.debian.org>
2         RequestHeader set Accept-Encoding "expr=gzip,%{req:Accept-Encoding}" early
3         AddDefaultCharset utf-8
4
5         # Replace e.g. pt-BR with pt_BR.
6         RequestHeader edit Accept-Language "-" "_" early
7
8         # Only SetEnvIf gets called _before_ RewriteRule.
9         SetEnvIf Accept-Language "^(.*)$" ACCLANG=$1 INITIAL=t
10         SetEnvIf Accept-Language "^$" ACCLANG=en INITIAL=t
11
12         RewriteEngine on
13         RewriteMap manpagesall dbm:/srv/static.debian.org/mirrors/manpages.debian.org/cur/rwmap.dbm
14         RewriteMap lc int:tolower
15
16         # Redirect old CGI paths (without CGI file name), keeping at least the
17         # manpage (the other parameters are left out for simplicity).
18         RewriteCond %{QUERY_STRING} (?:.*(?:^|&))query=([^&]+)
19         RewriteRule ^/?$ /%1 [redirect=307,qsdiscard,last]
20
21         # URLs which end in a slash do not need to be rewritten
22         RewriteRule /$ - [last]
23
24         # Redirect old CGI paths, keeping at least the manpage (the other
25         # parameters are left out for simplicity).
26         RewriteCond %{QUERY_STRING} ^$
27         RewriteRule ^/cgi-bin/man.cgi$ / [redirect=301,last]
28         RewriteCond %{QUERY_STRING} (?:.*(?:^|&))query=([^&]+)
29         RewriteRule ^/cgi-bin/man.cgi /%1 [redirect=307,qsdiscard,last]
30
31         # legacy manpages.debian.org patterns
32         RewriteCond "%{env:INITIAL}" "=t"
33         RewriteRule ^/man/0/(.*$) /$1
34         RewriteCond "%{env:INITIAL}" "=t"
35         RewriteRule ^/man/([0-9ln]p?m?)/(.*$) /$2.$1
36
37         RewriteCond "%{env:INITIAL}" "=t"
38         RewriteRule ^/man0/(.*$) /$1
39         RewriteCond "%{env:INITIAL}" "=t"
40         RewriteRule ^/man([0-9ln]p?m?)/(.*$) /$2.$1
41         RewriteCond "%{env:INITIAL}" "=t"
42         RewriteRule ^/([^/]+)/man0/(.*$) /$2.$1
43         RewriteCond "%{env:INITIAL}" "=t"
44         RewriteRule ^/([^/]+)/man([0-9ln]p?m?)/(.*$) /$3.$2.$1
45
46         RewriteCond "%{env:INITIAL}" "=t"
47         RewriteRule ^/man/([a-z]*)/([^/]+)/0/(.*$) /$1/$3.$2
48         RewriteCond "%{env:INITIAL}" "=t"
49         RewriteRule ^/man/([a-z]*)/([^/]+)/([0-9ln]p?m?)/(.*$) /$1/$4.$3.$2
50         RewriteCond "%{env:INITIAL}" "=t"
51         RewriteRule ^/man/([a-z]*)/0/(.*$) /$1/$2
52         RewriteCond "%{env:INITIAL}" "=t"
53         RewriteRule ^/man/([a-z]*)/([0-9ln]p?m?)/(.*$) /$1/$3.$2
54
55         RewriteCond "%{env:INITIAL}" "=t"
56         RewriteRule ^/0/(.*$) /$1
57         RewriteCond "%{env:INITIAL}" "=t"
58         RewriteRule ^/([0-9ln]p?m?)/(.*$) /$2.$1
59
60         RewriteCond "%{env:INITIAL}" "=t"
61         RewriteRule ^/man/([^/]+)/(.*$) /$2.$1
62         RewriteCond "%{env:INITIAL}" "=t"
63         RewriteRule ^/man/(.*$) /$1
64
65         # chomp off the first language tag for use in the following rules
66         RewriteCond "%{env:ACCLANG}" "^([^,;]+)"
67         RewriteRule .* - [E=ACCTOK:%1]
68
69         RewriteCond "${manpagesall:${lc:$1}.%{env:ACCTOK}}" "^(.+)$"
70         RewriteRule ^(.+)$ %1 [redirect=307,last]
71
72         # Example Accept-Language header:
73         # en-US,en;q=0.8,de-CH;q=0.6,de;q=0.4
74
75         RewriteRule .* - [E=!INITIAL]
76
77         # while ACCLANG is non-empty, repeat
78         RewriteCond "%{env:ACCLANG}" "^(?:[^,]+),(.+)"
79         RewriteRule .* - [E=ACCLANG:%1,N]
80
81         # fallback: maybe the language is already present?
82         RewriteCond "${manpagesall:${lc:$1}}" "^(.+)$"
83         RewriteRule ^(.+)$ %1 [redirect=307,last]
84
85         <Directory /srv/static.debian.org/mirrors/manpages.debian.org/cur>
86                 ExpiresActive On
87                 ExpiresDefault "access plus 1 hours"
88
89                 <Files ~ "^rwmap">
90                         Require all denied
91                 </Files>
92
93                 # DefaultType doesn’t work since Apache 2.3.x, so we need to match
94                 # non-HTML files to work around https://bugs.debian.org/880542
95                 <FilesMatch "(?<!\.html)\.gz$">
96                         ForceType text/plain
97                 </FilesMatch>
98
99                 # To set the correct Content-Type (e.g. text/html).
100                 RemoveType .gz
101                 AddEncoding gzip gz
102                 FilterDeclare gzip CONTENT_SET
103                 FilterProvider gzip inflate "%{req:Accept-Encoding} !~ /gzip,.*gzip/"
104                 FilterChain gzip
105                 Options +Multiviews
106         </Directory>
107
108         ErrorDocument 404 https://dyn.manpages.debian.org%{REQUEST_URI}?%{QUERY_STRING}
109 </Macro>
110
111 # vim:ft=apache: