Adapt the configuration of redirects from the server hosting
libvirt.org
The redirect to the 'libvirt-console-proxy' Golang module is not adapted
as it doesn't exist on the current server.
NOTES:
- The redirects are currently configured for hosting via the
'gitlab.io/libvirt' URI. For hosting via custom domain it will need
to be rewritten to drop the '/libvirt' prefixes.
- gitlab pages doesn't currently support redirects to outside content,
thus most of the redirects don't actually work:
https://gitlab.com/gitlab-org/gitlab-pages/-/issues/601
- The redirects file is only installed in the webpage job but is not
actually distributed.
- The validity of the redirects can be checked by visiting:
https://libvirt.gitlab.io/_redirects
Having them installed allows us to validate them before we'll be
switching to use gitlab pages completely.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
.gitlab-ci.yml | 1 +
docs/.gitlab_redirects | 54 ++++++++++++++++++++++++++++++++++++++++++
2 files changed, 55 insertions(+)
create mode 100644 docs/.gitlab_redirects
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6c7d54c311..1ee945aa0a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -130,6 +130,7 @@ website_prebuilt_env_legacy:
after_script:
- test "$CI_JOB_STATUS" != "success" && exit 1;
- mv install/usr/share/doc/libvirt/html/ public
+ - cp docs/.gitlab_redirects public/_redirects
artifacts:
expose_as: 'pages'
name: 'pages'
diff --git a/docs/.gitlab_redirects b/docs/.gitlab_redirects
new file mode 100644
index 0000000000..26e64563ee
--- /dev/null
+++ b/docs/.gitlab_redirects
@@ -0,0 +1,54 @@
+# 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/*
https://download.libvirt.org/maven2/: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/.*)
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]
--
2.43.0