--- /dev/null
+# Redirects to golang module pages
+/libvirt/libvirt-go /libvirt-go.html 200
+/libvirt/libvirt-go-xml /libvirt-go-xml.html 200
+/libvirt/go/libvirt /go/libvirt.html 200
+/libvirt/go/libvirtxml /go/libvirtxml.html 200
+
+# Redirects to the download server
+/libvirt/sources/* https://download.libvirt.org/:splat 301
+/libvirt/ruby/download/* https://download.libvirt.org/ruby/:splat 301
+/libvirt/maven2/org/libvirt* https://download.libvirt.org/maven2/org/libvirt/:splat 301
+
+# Redirects to subproject pages
+/libvirt/ruby/* https://ruby.libvirt.org/:splat 301
+/libvirt/ocaml/* https://ocaml.libvirt.org/:splat 301
+/libvirt/php/* https://php.libvirt.org/:splat 301
+/libvirt/libvirt-appdev-guide-python/en-US/html/* https://libvirt.gitlab.io/libvirt-appdev-guide-python/:splat: 301
+/libvirt/java.html https://java.libvirt.org 301
+# Redirect to the proper javadoc directory on the subproject page
+/libvirt/sources/java/javadoc/* https://java.libvirt.org/javadoc/:splat 301
+
+# Redirects from old gitweb location (see below)
+/libvirt/git https://gitlab.com/libvirt/ 301
+
+# The above rules are adapted from the following set of 'mod_rewrite' rules used
+# originally on libvirt.org:
+#
+# RewriteRule ^/libvirt-go$ /libvirt-go.html [L]
+# RewriteRule ^/libvirt-go-xml$ /libvirt-go-xml.html [L]
+# RewriteRule ^/go/libvirt$ /go/libvirt.html [L]
+# RewriteRule ^/go/libvirtxml$ /go/libvirtxml.html [L]
+# RewriteRule ^/sources/(.*) https://download.libvirt.org/$1 [L]
+# RewriteRule ^/ruby/download/(.*) https://download.libvirt.org/ruby/$1 [L]
+# RewriteRule ^/(maven2/org/libvirt.*) https://download.libvirt.org/$1 [L]
+# RewriteRule ^/ocaml/(.*) https://ocaml.libvirt.org/$1 [L]
+# RewriteRule ^/ruby/(.*) https://ruby.libvirt.org/$1 [L]
+# RewriteRule ^/php/(.*) https://php.libvirt.org/$1 [L]
+# RewriteRule ^/java.html https://java.libvirt.org [L]
+# RewriteRule ^/docs/libvirt-appdev-guide-python/en-US/html/(.*) https://libvirt.gitlab.io/libvirt-appdev-guide-python/$1 [L]
+# RewriteRule ^/git https://gitlab.com/libvirt/ [L]
+#
+# Redirect replacing 'gitweb'. The 'gitweb' interface was originally replaced
+# by the following redirect condition:
+#
+# RewriteCond %{QUERY_STRING} p=([-a-zA-Z0-9]+).git
+# RewriteRule ^/git/$ https://gitlab.com/libvirt/%1 [L]
+#
+# That unfortunately can't be represented in gitlab redirects as it doesn't
+# support redirects based on query strings. Given that the above redirect broke
+# most gitweb links anyways, due to handling only the 'p=' argument, git gitlab
+# redirect will break the rest of them.
+#
+# The following rule was dropped as the page never existed:
+#
+# RewriteRule ^/libvirt-console-proxy$ /libvirt-console-proxy.html [L]