1 <Macro vstatic-vhost-extra-manpages.debian.org>
2 RequestHeader set Accept-Encoding "expr=gzip,%{req:Accept-Encoding}" early
3 AddDefaultCharset utf-8
5 # Replace e.g. pt-BR with pt_BR.
6 RequestHeader edit Accept-Language "-" "_" early
8 # Only SetEnvIf gets called _before_ RewriteRule.
9 SetEnvIf Accept-Language "^(.*)$" ACCLANG=$1 INITIAL=t
10 SetEnvIf Accept-Language "^$" ACCLANG=en INITIAL=t
13 RewriteMap manpagesall dbm:/srv/static.debian.org/mirrors/manpages.debian.org/cur/rwmap.dbm
14 RewriteMap lc int:tolower
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]
21 # URLs which end in a slash do not need to be rewritten
22 RewriteRule /$ - [last]
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]
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
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
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
55 RewriteCond "%{env:INITIAL}" "=t"
56 RewriteRule ^/0/(.*$) /$1
57 RewriteCond "%{env:INITIAL}" "=t"
58 RewriteRule ^/([0-9ln]p?m?)/(.*$) /$2.$1
60 RewriteCond "%{env:INITIAL}" "=t"
61 RewriteRule ^/man/([^/]+)/(.*$) /$2.$1
62 RewriteCond "%{env:INITIAL}" "=t"
63 RewriteRule ^/man/(.*$) /$1
65 # chomp off the first language tag for use in the following rules
66 RewriteCond "%{env:ACCLANG}" "^([^,;]+)"
67 RewriteRule .* - [E=ACCTOK:%1]
69 RewriteCond "${manpagesall:${lc:$1}.%{env:ACCTOK}}" "^(.+)$"
70 RewriteRule ^(.+)$ %1 [redirect=307,last]
72 # Example Accept-Language header:
73 # en-US,en;q=0.8,de-CH;q=0.6,de;q=0.4
75 RewriteRule .* - [E=!INITIAL]
77 # while ACCLANG is non-empty, repeat
78 RewriteCond "%{env:ACCLANG}" "^(?:[^,]+),(.+)"
79 RewriteRule .* - [E=ACCLANG:%1,N]
81 # fallback: maybe the language is already present?
82 RewriteCond "${manpagesall:${lc:$1}}" "^(.+)$"
83 RewriteRule ^(.+)$ %1 [redirect=307,last]
85 <Directory /srv/static.debian.org/mirrors/manpages.debian.org/cur>
87 ExpiresDefault "access plus 1 hours"
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$">
99 # To set the correct Content-Type (e.g. text/html).
102 FilterDeclare gzip CONTENT_SET
103 FilterProvider gzip inflate "%{req:Accept-Encoding} !~ /gzip,.*gzip/"
108 ErrorDocument 404 https://dyn.manpages.debian.org%{REQUEST_URI}?%{QUERY_STRING}