9222a5127e13d0519ce1ca4b26fb38c1f03671d3
[mirror/dsa-puppet.git] / modules / roles / templates / apache-www.debian.org.erb
1 ##
2 ## THIS FILE IS UNDER PUPPET CONTROL. DON'T EDIT IT HERE.
3 ## USE: git clone git+ssh://$USER@puppet.debian.org/srv/puppet.debian.org/git/dsa-puppet.git
4 ##
5
6 # Need to turn on negotiation_module
7 <Directory <%= @wwwdo_document_root %>/>
8   Options +MultiViews +FollowSymLinks +Indexes
9   AddHandler type-map var
10   # Make sure that the srm.conf directive is commented out.
11   AddDefaultCharSet Off
12   AllowOverride AuthConfig FileInfo
13   Require all granted
14
15   # Serve icons as image/x-icon
16   AddType image/x-icon .ico
17
18   # Serve RSS feeds as application/rss+xml
19   AddType application/rss+xml .rdf
20
21   # Nice caching..
22   ExpiresActive On
23   ExpiresDefault "access plus 1 day"
24   ExpiresByType image/gif "access plus 1 week"
25   ExpiresByType image/jpeg "access plus 1 week"
26   ExpiresByType image/png "access plus 1 week"
27   ExpiresByType image/x-icon "access plus 1 week"
28
29   # FileEtag needs to be the same across mirrors (used for caching, ignore inode)
30   FileEtag MTime Size
31
32   # language stuff, for web site translations
33   # for boot-floppies docs only: sk
34   AddLanguage en .en
35   AddLanguage en-us .en-us
36   AddLanguage en-gb .en-gb
37   AddLanguage ar .ar
38   AddLanguage bg .bg
39   AddLanguage ca .ca
40   AddLanguage cs .cs
41   AddLanguage da .da
42   AddLanguage de .de
43   AddLanguage el .el
44   AddLanguage eo .eo
45   AddLanguage es .es
46   AddLanguage fi .fi
47   AddLanguage fr .fr
48   AddLanguage hr .hr
49   AddLanguage hu .hu
50   AddLanguage hy .hy
51   AddLanguage id .id
52   AddLanguage it .it
53   AddLanguage ja .ja
54   AddLanguage ko .ko
55   AddLanguage lt .lt
56   AddLanguage nl .nl
57   AddLanguage no .no
58   AddLanguage nb .nb
59   AddLanguage pl .pl
60   AddLanguage pt .pt
61   AddLanguage pt-br .pt-br
62   AddLanguage ro .ro
63   AddLanguage ru .ru
64   AddLanguage sk .sk
65   AddLanguage sl .sl
66   AddLanguage sv .sv
67   AddLanguage tr .tr
68   AddLanguage uk .uk
69   AddLanguage vi .vi
70   AddLanguage zh-CN .zh-cn
71   AddLanguage zh-HK .zh-hk
72   AddLanguage zh-TW .zh-tw
73   LanguagePriority en fr de it es ja pl hr da pt pt-br fi zh-cn zh-hk zh-tw cs sv ko no nb ru tr eo ar nl hu ro sk el ca en-us en-gb id lt sl bg uk hy vi
74
75   DirectoryIndex maintenance index index.html index.shtml index.htm
76
77   <Files *.html.es>
78     ForceType text/html
79   </Files>
80
81   <Files *.pdf.es>
82     ForceType application/pdf
83   </Files>
84
85   <Files *.txt.es>
86     ForceType text/plain
87   </Files>
88 </Directory>
89
90 <Macro common-www-other.d.o>
91    ServerName debian.org
92    ServerAdmin webmaster@debian.org
93
94    ServerAlias www.debian.net
95    ServerAlias debian.net
96
97    ServerAlias www.debian.eu
98    ServerAlias debian.eu
99
100    ServerAlias www.debian.nl
101    ServerAlias debian.nl
102
103    ServerAlias www.debian.com
104    ServerAlias debian.com
105
106    ServerAlias debian.us
107    ServerAlias www.debian.us
108
109    ServerAlias debian.gr
110    ServerAlias www.debian.gr
111
112    ServerAlias www.debian.es
113    ServerAlias debian.es
114
115    ServerAlias www.debian.at
116
117    DocumentRoot <%= @wwwdo_document_root %>/
118    LogFormat "0.0.0.0 - %u %{[%d/%b/%Y:00:00:00 %z]}t \"%r\" %>s %b \"%{Referer}i\" \"-\" %V" privacy+host
119    ErrorLog /var/log/apache2/www-other.debian.org-error.log
120    CustomLog /var/log/apache2/www-other.debian.org-access.log privacy+host
121 </Macro>
122
123 <Macro common-www.d.o-inner>
124    ServerAdmin webmaster@debian.org
125    DocumentRoot <%= @wwwdo_document_root %>/
126
127    # CacheNegotiatedDocs: By default, Apache sends Pragma: no-cache with each
128    # document that was negotiated on the basis of content. This asks proxy
129    # servers not to cache the document. Uncommenting the following line disables
130    # this behavior, and proxies will be allowed to cache the documents.
131    CacheNegotiatedDocs On
132
133    # The UI for language selection in browsers is rarely used or known about
134    # by visitors so websites need to provide a way for visitors to influence
135    # content negotiation using the website itself in addition to the browser.
136    # Setting a cookie is the simplest option for us as the URLs don't change.
137    # The GDPR does not apply and to satisfy the EU cookie law we can include
138    # some explanatory text around the form that sets the cookie.
139    # The use of POST requests will ensure each cookie is only set explictly.
140    # When a cookie is set by the user, update it on every visit so it doesn't
141    # expire unless the user stops visiting the website for the cookie duration.
142    # Since Apache mod_rewrite cannot inspect POST data, we use URLs instead.
143    RewriteEngine on
144    RewriteCond %{REQUEST_METHOD} ^POST$
145    RewriteRule /intro/cn/setlang/([a-z]{2}(?:-[a-z]{2})?)/(.*) /$2 [last,redirect,cookie=lang:$1:%{HTTP_HOST}:40320:/:secure:]
146    RewriteCond %{REQUEST_METHOD} ^POST$
147    RewriteRule /intro/cn/unsetlang/(.*) /$1 [last,redirect,cookie=lang:invalid:%{HTTP_HOST}:-1:/:secure:]
148    RewriteCond %{HTTP_COOKIE} /^lang=([a-z]{2}(?:-[a-z]{2})?)$/
149    RewriteRule . - [cookie=lang:%1:%{HTTP_HOST}:40320:/:secure:]
150    SetEnvIf Cookie "lang=(.+)" prefer-language=$1
151    Header append Vary cookie
152
153 # Custom Error
154    ErrorDocument 404 /devel/website/errors/404
155    RewriteCond %{DOCUMENT_ROOT}/devel/website/errors/404.$2.html -f
156    RewriteRule ^/(?!devel/website/errors/)(.*/)?404\.(.+)\.html$ /devel/website/errors/404.$2.html [L]
157
158 # the joys of backwards compatibility
159    Redirect /Lists-Archives https://lists.debian.org
160    Redirect /search https://search.debian.org
161    Redirect /Packages https://packages.debian.org
162    Redirect /lintian https://lintian.debian.org
163
164    Redirect /SPI https://www.spi-inc.org
165 #   Redirect /OpenHardware http://www.openhardware.org
166    Redirect /OpenSource https://opensource.org
167    Redirect /Bugs/db/ix/pseudopackages.html /Bugs/pseudo-packages
168    RewriteRule ^/Bugs/db/pa/l([^/]+).html$ https://bugs.debian.org/$1
169    RewriteRule ^/Bugs/db/[[:digit:]][[:digit:]]/([[:digit:]][[:digit:]][[:digit:]]+).html$ https://bugs.debian.org/$1
170    RewriteRule ^/Bugs/db/ma/l([^/]+).html$ https://bugs.debian.org/cgi-bin/pkgreport.cgi?maintenc=$1
171
172    <IfModule mod_userdir.c>
173       UserDir disabled
174    </IfModule>
175
176    Redirect /devel/todo/ /devel/wnpp/help_requested_bypop
177    Redirect /doc/FAQ /doc/manuals/debian-faq
178    Redirect /doc/manuals/debian-fr-howto /doc/manuals/fr/debian-fr-howto
179    Redirect /doc/manuals/reference /doc/manuals/debian-reference
180    Redirect /doc/packaging-manuals/developers-reference /doc/manuals/developers-reference
181    Redirect /doc/packaging-manuals/packaging-tutorial /doc/manuals/packaging-tutorial
182    Redirect /doc/prospective-packages /devel/wnpp/
183    Redirect /devel/maintainer_contacts /intro/organization
184    Redirect /devel/debian-installer/gtk-frontend https://wiki.debian.org/DebianInstaller/GUI
185    Redirect /zh/ /international/Chinese/
186    Redirect /chinese/ /international/Chinese/
187    Redirect /devel/help /devel/join/
188    Redirect /distrib/books /doc/books
189    Redirect /distrib/floppyinst /distrib/netinst
190    Redirect /distrib/netboot /distrib/netinst
191    Redirect /distrib/vendors /CD/vendors/
192    Redirect /distrib/cd /CD/
193    Redirect /distrib/cdinfo /CD/vendors/info
194    Redirect /related_links /misc/related_links
195    Redirect /ports/laptops /misc/laptops/
196    Redirect /misc/README.mirrors /mirror/list
197    Redirect /misc/README.non-US /mirror/list.non-US
198    Redirect /misc/awards /News/awards
199    Redirect /misc/bsd.license https://opensource.org/licenses/BSD-3-Clause
200    Redirect /misc/laptops https://wiki.debian.org/InstallingDebianOn
201    Redirect /misc/memberships /intro/organization#memberships
202    Redirect /misc/merchandise /events/merchandise
203    Redirect /intl /international
204    Redirect /ports/armel  /ports/arm
205    Redirect /ports/armhf  /ports/arm
206    Redirect /ports/arm64  /ports/arm
207    Redirect /ports/mipsel /ports/mips
208    Redirect /ports/mips64el /ports/mips
209    Redirect /ports/kfreebsd-amd64 /ports/kfreebsd-gnu
210    Redirect /ports/kfreebsd-i386  /ports/kfreebsd-gnu
211    Redirect /ports/sparc64 /ports/sparc
212    Redirect /ports/s390x   /ports/s390
213    Redirect /ports/ppc64   /ports/powerpc
214    Redirect /ports/ppc64el   /ports/powerpc
215    Redirect /ports/powerpcspe   /ports/powerpc
216    Redirect /ports/riscv64   https://wiki.debian.org/RISC-V
217    Redirect /ports/x32   https://wiki.debian.org/X32Port
218    Redirect /ports/sh4   https://wiki.debian.org/SH4
219    Redirect /mirror/official_sponsors /mirror/sponsors
220    Redirect /mirror/official /mirror/list
221    Redirect /mirror/mirrors_full.html /mirror/list-full.html
222    Redirect /mirrors /mirror
223    Redirect /News/project /News/weekly
224    Redirect /releases/2.0 /releases/hamm
225    Redirect /releases/2.1 /releases/slink
226    Redirect /releases/2.2 /releases/potato
227    Redirect /releases/3.0 /releases/woody
228    Redirect /releases/3.1 /releases/sarge
229    Redirect /releases/4.0 /releases/etch
230    Redirect /releases/5.0 /releases/lenny
231    Redirect /releases/6.0 /releases/squeeze
232    Redirect /releases/7 /releases/wheezy
233    Redirect /releases/8 /releases/jessie
234    Redirect /releases/9 /releases/stretch
235    Redirect /releases/10 /releases/buster
236    Redirect /releases/unstable /releases/sid
237    Redirect /support/ /support
238
239 # Upper-case URLs were a bad idea
240    Redirect /bugs /Bugs
241    Redirect /news /News
242    Redirect /mailinglists /MailingLists
243    Redirect /cd /CD
244
245    RewriteRule ^/ports/freebsd(.*) /ports/kfreebsd-gnu/ [R]
246    RewriteRule ^/devel/debian-installer/report-template(.*) /releases/stable/i386/ch05s04.html#submit-bug [NE,R]
247    RewriteRule ^/devel/debian-installer/hooks(.*) https://d-i.alioth.debian.org/doc/internals/apb.html [R]
248    RewriteRule ^/doc/packaging-manuals/mime-policy(.*) /doc/debian-policy/ch-opersys.html#s-mime [NE,R]
249
250    RewriteRule ^/volatile/index.* - [S=1]
251    RewriteRule ^/volatile/.+ /volatile/ [L,R]
252    RewriteRule ^/devel/debian-volatile/.* /volatile/ [R]
253
254 # Offer a Redirect to DSA without knowing year #474730
255    RewriteMap dsa txt:<%= @wwwdo_document_root %>/security/map-dsa.txt
256    RewriteRule ^/security/dsa-(\d+)(\..*)? /security/${dsa:$1}$2 [R]
257
258 # Compatibility after SGML -> DocBook
259 # Debian Reference #624239
260    RewriteMap reference txt:<%= @wwwdo_document_root %>/doc/map-reference.txt
261    RewriteCond %{DOCUMENT_ROOT}/doc/manuals/debian-reference/ch-support$1 !-f
262    RewriteRule ^/doc/manuals/debian-reference/ch-support(.*)  /support$1 [L,R]
263    RewriteCond %{DOCUMENT_ROOT}/doc/manuals/debian-reference/${reference:$1}$2 -f
264    RewriteRule ^/doc/manuals/debian-reference/ch-([^\.]+)(.+) /doc/manuals/debian-reference/${reference:$1}$2 [L,R]
265    RewriteRule ^/doc/manuals/debian-reference/ch-([^\.]+)$    /doc/manuals/debian-reference/${reference:$1}     [R]
266    RewriteCond %{DOCUMENT_ROOT}/doc/manuals/debian-reference/apa$1 -f
267    RewriteRule ^/doc/manuals/debian-reference/ap-appendix(.+) /doc/manuals/debian-reference/apa$1 [L,R]
268    RewriteRule ^/doc/manuals/debian-reference/ap-appendix$    /doc/manuals/debian-reference/apa     [R]
269    RewriteCond %{DOCUMENT_ROOT}/doc/manuals/debian-reference/footnotes$1 !-f
270    RewriteRule ^/doc/manuals/debian-reference/footnotes(.+)   /doc/manuals/debian-reference/index$1 [L,R]
271    RewriteRule ^/doc/manuals/debian-reference/footnotes$      /doc/manuals/debian-reference/          [R]
272
273 # DevRef filename changes c2019 (#931548, migration to Sphinx)
274    RedirectMatch ^(/doc/manuals/developers-reference)/ch01(\.[a-z]{2})?.html $1/scope$2.html
275    RedirectMatch ^(/doc/manuals/developers-reference)/ch02(\.[a-z]{2})?.html $1/new-maintainer$2.html
276    RedirectMatch ^(/doc/manuals/developers-reference)/ch03(\.[a-z]{2})?.html $1/developer-duties$2.html
277    RedirectMatch ^(/doc/manuals/developers-reference)/ch04(\.[a-z]{2})?.html $1/resources$2.html
278    RedirectMatch ^(/doc/manuals/developers-reference)/ch05(\.[a-z]{2})?.html $1/pkgs$2.html
279    RedirectMatch ^(/doc/manuals/developers-reference)/ch06(\.[a-z]{2})?.html $1/best-pkging-practices$2.html
280    RedirectMatch ^(/doc/manuals/developers-reference)/ch07(\.[a-z]{2})?.html $1/beyond-pkging$2.html
281    RedirectMatch ^(/doc/manuals/developers-reference)/ch08(\.[a-z]{2})?.html $1/l10n$2.html
282    RedirectMatch ^(/doc/manuals/developers-reference)/apa(\.[a-z]{2})?.html  $1/tools$2.html
283
284 # New Maintainers' Guide
285    RewriteRule ^/doc/(manuals/)?maint-guide/ch-(.*) /doc/manuals/maint-guide/$2 [R]
286    RewriteRule ^/doc/(manuals/)?maint-guide/footnotes(.*) /doc/manuals/maint-guide/index$2 [R]
287
288 # Compatibility after Debian Policy changed to build with Sphinx (bug #877367)
289    RewriteRule ^/doc/debian-policy/footnotes.html(.*) /doc/debian-policy/ [R,L]
290
291 # Canonical place for manuals under /doc/manuals/
292    RewriteCond %{DOCUMENT_ROOT}/doc/manuals/$1 -d
293    RewriteRule ^/doc/([^/]+)/?(.*)? /doc/manuals/$1/$2 [L,R]
294    RewriteRule ^/doc/manuals/?$ /doc/ [L,R]
295
296 # Relocation of blends pages
297    RewriteRule ^/devel/hamradio(.*)$ /blends/hamradio$1 [R,L]
298
299 # Relocation of derivatives pages
300    RewriteRule ^/misc/children-distros(?:\.html)?$ /derivatives/ [R,L]
301    RewriteRule ^/misc/children-distros(\.[^\.]+(?:\.html)?)$ /derivatives/index$1 [R,L]
302
303 # Relocation of memberships information
304    RewriteRule ^/misc/memberships(?:\.html)?$ /intro/organization$1#memberships [R,L]
305    RewriteRule ^/misc/memberships(\.[^\.]+(?:\.html)?)$ /intro/organization$1#memberships [R,L]
306 </Macro>
307
308 <Macro common-www.d.o>
309    ServerName <%= @wwwdo_server_name %>
310
311    Use common-www.d.o-inner
312 </Macro>
313
314
315 <VirtualHost <%= @vhost_listen %> >
316    ErrorLog /var/log/apache2/www.debian.org-error.log
317    CustomLog /var/log/apache2/www.debian.org-access.log privacy
318
319    ServerName <%= @wwwdo_server_name %>
320    Redirect / https://<%= @wwwdo_server_name %>/
321 </VirtualHost>
322 <VirtualHost <%= @vhost_listen_443 %> >
323    ErrorLog /var/log/apache2/www.debian.org-error.log
324    CustomLog /var/log/apache2/www.debian.org-access.log privacyssl
325
326    Use common-www.d.o
327
328    Use common-debian-service-ssl <%= @wwwdo_server_name %>
329    Use common-ssl-HSTS
330 </VirtualHost>
331 <% if scope.function_onion_global_service_hostname([@wwwdo_server_name]) -%>
332 <VirtualHost <%= @vhost_listen %> >
333    ErrorLog /var/log/apache2/www.debian.org-error.log
334    CustomLog /var/log/apache2/www.debian.org-access.log privacy
335
336    ServerName <%= scope.function_onion_global_service_hostname([@wwwdo_server_name]) %>
337
338    Use common-www.d.o-inner
339 </VirtualHost>
340 <% end %>
341
342
343 <%- if @redirect_vhosts -%>
344 # www other
345 ###########
346 <VirtualHost <%= @vhost_listen %> >
347    Use common-www-other.d.o
348
349    ErrorLog /var/log/apache2/www-other.debian.org-error.log
350    CustomLog /var/log/apache2/www-other.debian.org-access.log privacy
351
352    Redirect / https://www.debian.org/
353 </VirtualHost>
354 <VirtualHost <%= @vhost_listen_443 %> >
355    Use common-www-other.d.o
356
357    CustomLog /var/log/apache2/www-other-access.log privacyssl
358    ErrorLog /var/log/apache2/www-other-error.log
359
360    # Legacy GPG versions (including 2.2.12 in buster/Debian 10) use the "direct method" instead
361    # of the "advanced method" which should be tried first according to the draft
362    # https://tools.ietf.org/html/draft-koch-openpgp-webkey-service
363    # also cf. RT#7828
364    Redirect /.well-known/openpgpkey/ https://openpgpkey.debian.org/.well-known/openpgpkey/debian.org/
365
366    Redirect / https://www.debian.org/
367
368    Use common-debian-service-ssl debian.org
369    Use common-ssl-HSTS
370 </VirtualHost>
371 <%- end -%>
372 # vim:set syn=apache: