You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by dj...@apache.org on 2021/11/16 21:41:14 UTC
[camel-website] 01/02: Assemble the final .htaccess file from a static file, the Antora generated .htaccess file, and transformations of generated 302 rules
This is an automated email from the ASF dual-hosted git repository.
djencks pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-website.git
commit 809e1db85f4461f6e02e3ffee7262bc6285406e9
Author: David Jencks <dj...@apache.org>
AuthorDate: Sat Nov 13 18:29:22 2021 -0800
Assemble the final .htaccess file from a static file, the Antora generated .htaccess file, and transformations of generated 302 rules
---
antora-playbook.yml | 8 +-
gulpfile.js | 39 +++++++++
local-httpd-in-docker.sh | 9 ++
package.json | 4 +-
static/.htaccess | 208 +----------------------------------------------
tests/redirect.sh | 97 +++++++++++++---------
6 files changed, 115 insertions(+), 250 deletions(-)
diff --git a/antora-playbook.yml b/antora-playbook.yml
index 41b475b..786b589 100644
--- a/antora-playbook.yml
+++ b/antora-playbook.yml
@@ -1,7 +1,7 @@
site:
title: Apache Camel
url: https://camel.apache.org
- start_page: _@manual::index.adoc
+# start_page: _@manual::index.adoc
content:
sources:
@@ -97,9 +97,9 @@ ui:
url: ./antora-ui-camel/build/ui-bundle.zip
urls:
- redirect_facility: disabled
-# latest_version_segment_strategy: redirect:from
-# latest_version_segment: latest
+ redirect_facility: httpd
+ latest_version_segment_strategy: redirect:from
+ latest_version_segment: latest
output:
diff --git a/gulpfile.js b/gulpfile.js
index 97712f2..881724e 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -2,6 +2,7 @@ const cheerio = require('gulp-cheerio');
const env = process.env.CAMEL_ENV || 'development';
const gulp = require('gulp');
const htmlmin = require('gulp-htmlmin');
+const inject = require('gulp-inject')
/**
* We minify all HTML files using htmlmin, this is to make them smaller in size
@@ -53,6 +54,44 @@ gulp.task('sitemap', (done) => {
.pipe(gulp.dest('public'));
});
+gulp.task('htaccess', (done) => {
+ return gulp.src(`static/.htaccess`)
+ .pipe(
+ inject(
+ gulp.src('documentation/.htaccess'),
+ {
+ starttag:'<!-- inject:htaccess -->',
+ removeTags: true,
+ transform: (filename, file) => {
+ return versionlessRedirects(file.contents.toString('utf8'))
+ },
+ }
+ )
+ )
+ .pipe(gulp.dest('public'))
+});
+
+const REDIRECT_RX = /^Redirect 302 \/(?<component>c.*)\/latest \/\k<component>\/(?<version>.*)$/
+
+function versionlessRedirects (text) {
+ const lines = text.split('\n')
+ const processed = lines.reduce((accum, line) => {
+ accum.push(line)
+ const m = line.match(REDIRECT_RX)
+ if (m) {
+ accum.push(`RedirectMatch 302 "^/${m.groups.component}(/?)$" "/${m.groups.component}/${m.groups.version}/"`)
+ // The first line redirects **/next to **/next/ so the second line does not match.
+ // Apparently it needs to be a match or it will transform **/next/ to **/next//
+ accum.push(`RedirectMatch 301 "^/${m.groups.component}/next$" "/${m.groups.component}/next/"`)
+ accum.push(`RedirectMatch 302 "^/${m.groups.component}/(?![0-9].*|next/)(.+)$" "/${m.groups.component}/${m.groups.version}/$1"`)
+ // As an alternative, the following line works as long as no file names start with 'next'
+ // accum.push(`RedirectMatch 302 "^/${m.groups.component}/(?![0-9].*|next)(.+)$" "/${m.groups.component}/${m.groups.version}/$1"`)
+ }
+ return accum
+ }, [])
+ return processed.join('\n')
+}
+
/*
* Removes the content from the `public` directory.
*/
diff --git a/local-httpd-in-docker.sh b/local-httpd-in-docker.sh
new file mode 100755
index 0000000..596ada5
--- /dev/null
+++ b/local-httpd-in-docker.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Run httpd in docker
+
+#docker build -t camel-website .
+docker run --rm -p 80:80 -p 443:443 \
+ -v "$PWD/public":/usr/local/apache2/htdocs/:Z \
+ -v "$PWD/support/http":/support:Z \
+ httpd:2.4 /bin/bash -c "cp /support/* /usr/local/apache2/conf/ && httpd-foreground"
\ No newline at end of file
diff --git a/package.json b/package.json
index 8229bf7..9d4cfbd 100644
--- a/package.json
+++ b/package.json
@@ -3,12 +3,13 @@
"version": "1.0.0-SNAPSHOT",
"license": "Apache-2.0",
"scripts": {
- "build": "run-s build:antora build:hugo build:sitemap build:minify",
+ "build": "run-s build:antora build:hugo build:sitemap build:htaccess build:minify",
"build-all": "yarn workspaces foreach --topological-dev run build",
"build:antora": "antora --clean --fetch antora-playbook.yml --stacktrace",
"build:hugo": "hugo --cacheDir ${HUGO_CACHE_DIR:-$(pwd)/.hugo_data} ${HUGO_OPTIONS:-}",
"build:minify": "gulp minify",
"build:sitemap": "gulp sitemap",
+ "build:htaccess": "gulp htaccess",
"check:html": "html-validate public",
"check:links": "deadlinks-linux public",
"checks": "run-s check:links check:html",
@@ -38,6 +39,7 @@
"gulp": "~4.0",
"gulp-cheerio": "~1.0",
"gulp-htmlmin": "~5.0",
+ "gulp-inject": "^5.0.2",
"html-validate": "~4",
"hugo-extended": "^0.84.3",
"netlify-cli": "^6.14.10",
diff --git a/static/.htaccess b/static/.htaccess
index 2165b7d..dd65921 100644
--- a/static/.htaccess
+++ b/static/.htaccess
@@ -548,187 +548,6 @@ Redirect 301 /camel-embedded-maven-goal.html /manual/camel-embedded-maven-goal.h
Redirect 301 /camel-jar-dependencies.html /manual/camel-jar-dependencies.html
Redirect 301 /camel-maven-archetypes.html /manual/camel-maven-archetypes.html
Redirect 301 /camel-maven-plugin.html /manual/camel-maven-plugin.html
-# camel-quarkus start: copied from camel-quarkus/docs/target/site/.htaccess built locally
-Redirect 301 /camel-quarkus/latest/list-of-camel-quarkus-extensions.html /camel-quarkus/next/reference/index.html
-Redirect 301 /camel-quarkus/latest/reference/extensions/index.html /camel-quarkus/next/reference/index.html
-Redirect 301 /camel-quarkus/latest/cdi.html /camel-quarkus/next/user-guide/cdi.html
-Redirect 301 /camel-quarkus/latest/examples.html /camel-quarkus/next/user-guide/examples.html
-Redirect 301 /camel-quarkus/latest/first-steps.html /camel-quarkus/next/user-guide/first-steps.html
-Redirect 301 /camel-quarkus/latest/user-guide.html /camel-quarkus/next/user-guide/index.html
-Redirect 301 /camel-quarkus/latest/native-mode.html /camel-quarkus/next/user-guide/native-mode.html
-Redirect 301 /camel-quarkus/latest/ci.html /camel-quarkus/next/contributor-guide/ci.html
-Redirect 301 /camel-quarkus/latest/create-new-extension.html /camel-quarkus/next/contributor-guide/create-new-extension.html
-Redirect 301 /camel-quarkus/latest/extension-documentation.html /camel-quarkus/next/contributor-guide/extension-documentation.html
-Redirect 301 /camel-quarkus/latest/extension-metadata.html /camel-quarkus/next/contributor-guide/extension-metadata.html
-Redirect 301 /camel-quarkus/latest/contributor-guide.html /camel-quarkus/next/contributor-guide/index.html
-Redirect 301 /camel-quarkus/latest/promote-jvm-to-native.html /camel-quarkus/next/contributor-guide/promote-jvm-to-native.html
-Redirect 301 /camel-quarkus/latest/release-guide.html /camel-quarkus/next/contributor-guide/release-guide.html
-Redirect 301 /camel-quarkus/latest/extensions/activemq.html /camel-quarkus/next/reference/extensions/activemq.html
-Redirect 301 /camel-quarkus/latest/extensions/ahc-ws.html /camel-quarkus/next/reference/extensions/ahc-ws.html
-Redirect 301 /camel-quarkus/latest/extensions/ahc.html /camel-quarkus/next/reference/extensions/ahc.html
-Redirect 301 /camel-quarkus/latest/extensions/amqp.html /camel-quarkus/next/reference/extensions/amqp.html
-Redirect 301 /camel-quarkus/latest/extensions/attachments.html /camel-quarkus/next/reference/extensions/attachments.html
-Redirect 301 /camel-quarkus/latest/extensions/avro-rpc.html /camel-quarkus/next/reference/extensions/avro-rpc.html
-Redirect 301 /camel-quarkus/latest/extensions/avro.html /camel-quarkus/next/reference/extensions/avro.html
-Redirect 301 /camel-quarkus/latest/extensions/aws-ec2.html /camel-quarkus/next/reference/extensions/aws-ec2.html
-Redirect 301 /camel-quarkus/latest/extensions/aws-ecs.html /camel-quarkus/next/reference/extensions/aws-ecs.html
-Redirect 301 /camel-quarkus/latest/extensions/aws-eks.html /camel-quarkus/next/reference/extensions/aws-eks.html
-Redirect 301 /camel-quarkus/latest/extensions/aws-iam.html /camel-quarkus/next/reference/extensions/aws-iam.html
-Redirect 301 /camel-quarkus/latest/extensions/aws-kinesis.html /camel-quarkus/next/reference/extensions/aws-kinesis.html
-Redirect 301 /camel-quarkus/latest/extensions/aws-kms.html /camel-quarkus/next/reference/extensions/aws-kms.html
-Redirect 301 /camel-quarkus/latest/extensions/aws-lambda.html /camel-quarkus/next/reference/extensions/aws-lambda.html
-Redirect 301 /camel-quarkus/latest/extensions/aws-s3.html /camel-quarkus/next/reference/extensions/aws-s3.html
-Redirect 301 /camel-quarkus/latest/extensions/aws-sdb.html /camel-quarkus/next/reference/extensions/aws-sdb.html
-Redirect 301 /camel-quarkus/latest/extensions/aws-sns.html /camel-quarkus/next/reference/extensions/aws-sns.html
-Redirect 301 /camel-quarkus/latest/extensions/aws-sqs.html /camel-quarkus/next/reference/extensions/aws-sqs.html
-Redirect 301 /camel-quarkus/latest/extensions/aws-swf.html /camel-quarkus/next/reference/extensions/aws-swf.html
-Redirect 301 /camel-quarkus/latest/extensions/aws-translate.html /camel-quarkus/next/reference/extensions/aws-translate.html
-Redirect 301 /camel-quarkus/latest/extensions/aws2-athena.html /camel-quarkus/next/reference/extensions/aws2-athena.html
-Redirect 301 /camel-quarkus/latest/extensions/aws2-cw.html /camel-quarkus/next/reference/extensions/aws2-cw.html
-Redirect 301 /camel-quarkus/latest/extensions/aws2-ddb.html /camel-quarkus/next/reference/extensions/aws2-ddb.html
-Redirect 301 /camel-quarkus/latest/extensions/aws2-ec2.html /camel-quarkus/next/reference/extensions/aws2-ec2.html
-Redirect 301 /camel-quarkus/latest/extensions/aws2-ecs.html /camel-quarkus/next/reference/extensions/aws2-ecs.html
-Redirect 301 /camel-quarkus/latest/extensions/aws2-eks.html /camel-quarkus/next/reference/extensions/aws2-eks.html
-Redirect 301 /camel-quarkus/latest/extensions/aws2-iam.html /camel-quarkus/next/reference/extensions/aws2-iam.html
-Redirect 301 /camel-quarkus/latest/extensions/aws2-kms.html /camel-quarkus/next/reference/extensions/aws2-kms.html
-Redirect 301 /camel-quarkus/latest/extensions/aws2-mq.html /camel-quarkus/next/reference/extensions/aws2-mq.html
-Redirect 301 /camel-quarkus/latest/extensions/aws2-msk.html /camel-quarkus/next/reference/extensions/aws2-msk.html
-Redirect 301 /camel-quarkus/latest/extensions/aws2-s3.html /camel-quarkus/next/reference/extensions/aws2-s3.html
-Redirect 301 /camel-quarkus/latest/extensions/aws2-ses.html /camel-quarkus/next/reference/extensions/aws2-ses.html
-Redirect 301 /camel-quarkus/latest/extensions/aws2-sns.html /camel-quarkus/next/reference/extensions/aws2-sns.html
-Redirect 301 /camel-quarkus/latest/extensions/aws2-sqs.html /camel-quarkus/next/reference/extensions/aws2-sqs.html
-Redirect 301 /camel-quarkus/latest/extensions/aws2-translate.html /camel-quarkus/next/reference/extensions/aws2-translate.html
-Redirect 301 /camel-quarkus/latest/extensions/azure.html /camel-quarkus/next/reference/extensions/azure.html
-Redirect 301 /camel-quarkus/latest/extensions/base64.html /camel-quarkus/next/reference/extensions/base64.html
-Redirect 301 /camel-quarkus/latest/extensions/bean-validator.html /camel-quarkus/next/reference/extensions/bean-validator.html
-Redirect 301 /camel-quarkus/latest/extensions/bean.html /camel-quarkus/next/reference/extensions/bean.html
-Redirect 301 /camel-quarkus/latest/extensions/bindy.html /camel-quarkus/next/reference/extensions/bindy.html
-Redirect 301 /camel-quarkus/latest/extensions/box.html /camel-quarkus/next/reference/extensions/box.html
-Redirect 301 /camel-quarkus/latest/extensions/braintree.html /camel-quarkus/next/reference/extensions/braintree.html
-Redirect 301 /camel-quarkus/latest/extensions/caffeine-lrucache.html /camel-quarkus/next/reference/extensions/caffeine-lrucache.html
-Redirect 301 /camel-quarkus/latest/extensions/cassandraql.html /camel-quarkus/next/reference/extensions/cassandraql.html
-Redirect 301 /camel-quarkus/latest/extensions/componentdsl.html /camel-quarkus/next/reference/extensions/componentdsl.html
-Redirect 301 /camel-quarkus/latest/extensions/consul.html /camel-quarkus/next/reference/extensions/consul.html
-Redirect 301 /camel-quarkus/latest/extensions/controlbus.html /camel-quarkus/next/reference/extensions/controlbus.html
-Redirect 301 /camel-quarkus/latest/extensions/core-cloud.html /camel-quarkus/next/reference/extensions/core-cloud.html
-Redirect 301 /camel-quarkus/latest/extensions/core.html /camel-quarkus/next/reference/extensions/core.html
-Redirect 301 /camel-quarkus/latest/extensions/couchbase.html /camel-quarkus/next/reference/extensions/couchbase.html
-Redirect 301 /camel-quarkus/latest/extensions/couchdb.html /camel-quarkus/next/reference/extensions/couchdb.html
-Redirect 301 /camel-quarkus/latest/extensions/cron.html /camel-quarkus/next/reference/extensions/cron.html
-Redirect 301 /camel-quarkus/latest/extensions/csv.html /camel-quarkus/next/reference/extensions/csv.html
-Redirect 301 /camel-quarkus/latest/extensions/dataformat.html /camel-quarkus/next/reference/extensions/dataformat.html
-Redirect 301 /camel-quarkus/latest/extensions/debezium-mongodb.html /camel-quarkus/next/reference/extensions/debezium-mongodb.html
-Redirect 301 /camel-quarkus/latest/extensions/debezium-mysql.html /camel-quarkus/next/reference/extensions/debezium-mysql.html
-Redirect 301 /camel-quarkus/latest/extensions/debezium-postgres.html /camel-quarkus/next/reference/extensions/debezium-postgres.html
-Redirect 301 /camel-quarkus/latest/extensions/debezium-sqlserver.html /camel-quarkus/next/reference/extensions/debezium-sqlserver.html
-Redirect 301 /camel-quarkus/latest/extensions/direct.html /camel-quarkus/next/reference/extensions/direct.html
-Redirect 301 /camel-quarkus/latest/extensions/dozer.html /camel-quarkus/next/reference/extensions/dozer.html
-Redirect 301 /camel-quarkus/latest/extensions/elasticsearch-rest.html /camel-quarkus/next/reference/extensions/elasticsearch-rest.html
-Redirect 301 /camel-quarkus/latest/extensions/endpointdsl.html /camel-quarkus/next/reference/extensions/endpointdsl.html
-Redirect 301 /camel-quarkus/latest/extensions/exec.html /camel-quarkus/next/reference/extensions/exec.html
-Redirect 301 /camel-quarkus/latest/extensions/fhir.html /camel-quarkus/next/reference/extensions/fhir.html
-Redirect 301 /camel-quarkus/latest/extensions/file-watch.html /camel-quarkus/next/reference/extensions/file-watch.html
-Redirect 301 /camel-quarkus/latest/extensions/file.html /camel-quarkus/next/reference/extensions/file.html
-Redirect 301 /camel-quarkus/latest/extensions/ftp.html /camel-quarkus/next/reference/extensions/ftp.html
-Redirect 301 /camel-quarkus/latest/extensions/github.html /camel-quarkus/next/reference/extensions/github.html
-Redirect 301 /camel-quarkus/latest/extensions/google-bigquery.html /camel-quarkus/next/reference/extensions/google-bigquery.html
-Redirect 301 /camel-quarkus/latest/extensions/google-calendar.html /camel-quarkus/next/reference/extensions/google-calendar.html
-Redirect 301 /camel-quarkus/latest/extensions/google-drive.html /camel-quarkus/next/reference/extensions/google-drive.html
-Redirect 301 /camel-quarkus/latest/extensions/google-mail.html /camel-quarkus/next/reference/extensions/google-mail.html
-Redirect 301 /camel-quarkus/latest/extensions/google-pubsub.html /camel-quarkus/next/reference/extensions/google-pubsub.html
-Redirect 301 /camel-quarkus/latest/extensions/google-sheets.html /camel-quarkus/next/reference/extensions/google-sheets.html
-Redirect 301 /camel-quarkus/latest/extensions/graphql.html /camel-quarkus/next/reference/extensions/graphql.html
-Redirect 301 /camel-quarkus/latest/extensions/grok.html /camel-quarkus/next/reference/extensions/grok.html
-Redirect 301 /camel-quarkus/latest/extensions/groovy.html /camel-quarkus/next/reference/extensions/groovy.html
-Redirect 301 /camel-quarkus/latest/extensions/grpc.html /camel-quarkus/next/reference/extensions/grpc.html
-Redirect 301 /camel-quarkus/latest/extensions/gson.html /camel-quarkus/next/reference/extensions/gson.html
-Redirect 301 /camel-quarkus/latest/extensions/http.html /camel-quarkus/next/reference/extensions/http.html
-Redirect 301 /camel-quarkus/latest/extensions/hystrix.html /camel-quarkus/next/reference/extensions/hystrix.html
-Redirect 301 /camel-quarkus/latest/extensions/ical.html /camel-quarkus/next/reference/extensions/ical.html
-Redirect 301 /camel-quarkus/latest/extensions/infinispan.html /camel-quarkus/next/reference/extensions/infinispan.html
-Redirect 301 /camel-quarkus/latest/extensions/influxdb.html /camel-quarkus/next/reference/extensions/influxdb.html
-Redirect 301 /camel-quarkus/latest/extensions/jackson.html /camel-quarkus/next/reference/extensions/jackson.html
-Redirect 301 /camel-quarkus/latest/extensions/jacksonxml.html /camel-quarkus/next/reference/extensions/jacksonxml.html
-Redirect 301 /camel-quarkus/latest/extensions/jaxb.html /camel-quarkus/next/reference/extensions/jaxb.html
-Redirect 301 /camel-quarkus/latest/extensions/jdbc.html /camel-quarkus/next/reference/extensions/jdbc.html
-Redirect 301 /camel-quarkus/latest/extensions/jira.html /camel-quarkus/next/reference/extensions/jira.html
-Redirect 301 /camel-quarkus/latest/extensions/jms.html /camel-quarkus/next/reference/extensions/jms.html
-Redirect 301 /camel-quarkus/latest/extensions/johnzon.html /camel-quarkus/next/reference/extensions/johnzon.html
-Redirect 301 /camel-quarkus/latest/extensions/jolt.html /camel-quarkus/next/reference/extensions/jolt.html
-Redirect 301 /camel-quarkus/latest/extensions/jpa.html /camel-quarkus/next/reference/extensions/jpa.html
-Redirect 301 /camel-quarkus/latest/extensions/json-validator.html /camel-quarkus/next/reference/extensions/json-validator.html
-Redirect 301 /camel-quarkus/latest/extensions/jsonpath.html /camel-quarkus/next/reference/extensions/jsonpath.html
-Redirect 301 /camel-quarkus/latest/extensions/jta.html /camel-quarkus/next/reference/extensions/jta.html
-Redirect 301 /camel-quarkus/latest/extensions/kafka.html /camel-quarkus/next/reference/extensions/kafka.html
-Redirect 301 /camel-quarkus/latest/extensions/kotlin.html /camel-quarkus/next/reference/extensions/kotlin.html
-Redirect 301 /camel-quarkus/latest/extensions/kubernetes.html /camel-quarkus/next/reference/extensions/kubernetes.html
-Redirect 301 /camel-quarkus/latest/extensions/kudu.html /camel-quarkus/next/reference/extensions/kudu.html
-Redirect 301 /camel-quarkus/latest/extensions/log.html /camel-quarkus/next/reference/extensions/log.html
-Redirect 301 /camel-quarkus/latest/extensions/lzf.html /camel-quarkus/next/reference/extensions/lzf.html
-Redirect 301 /camel-quarkus/latest/extensions/mail.html /camel-quarkus/next/reference/extensions/mail.html
-Redirect 301 /camel-quarkus/latest/extensions/main.html /camel-quarkus/next/reference/extensions/main.html
-Redirect 301 /camel-quarkus/latest/extensions/master.html /camel-quarkus/next/reference/extensions/master.html
-Redirect 301 /camel-quarkus/latest/extensions/microprofile-fault-tolerance.html /camel-quarkus/next/reference/extensions/microprofile-fault-tolerance.html
-Redirect 301 /camel-quarkus/latest/extensions/microprofile-health.html /camel-quarkus/next/reference/extensions/microprofile-health.html
-Redirect 301 /camel-quarkus/latest/extensions/microprofile-metrics.html /camel-quarkus/next/reference/extensions/microprofile-metrics.html
-Redirect 301 /camel-quarkus/latest/extensions/mock.html /camel-quarkus/next/reference/extensions/mock.html
-Redirect 301 /camel-quarkus/latest/extensions/mongodb-gridfs.html /camel-quarkus/next/reference/extensions/mongodb-gridfs.html
-Redirect 301 /camel-quarkus/latest/extensions/mongodb.html /camel-quarkus/next/reference/extensions/mongodb.html
-Redirect 301 /camel-quarkus/latest/extensions/mustache.html /camel-quarkus/next/reference/extensions/mustache.html
-Redirect 301 /camel-quarkus/latest/extensions/netty-http.html /camel-quarkus/next/reference/extensions/netty-http.html
-Redirect 301 /camel-quarkus/latest/extensions/netty.html /camel-quarkus/next/reference/extensions/netty.html
-Redirect 301 /camel-quarkus/latest/extensions/nitrite.html /camel-quarkus/next/reference/extensions/nitrite.html
-Redirect 301 /camel-quarkus/latest/extensions/ognl.html /camel-quarkus/next/reference/extensions/ognl.html
-Redirect 301 /camel-quarkus/latest/extensions/olingo4.html /camel-quarkus/next/reference/extensions/olingo4.html
-Redirect 301 /camel-quarkus/latest/extensions/openapi-java.html /camel-quarkus/next/reference/extensions/openapi-java.html
-Redirect 301 /camel-quarkus/latest/extensions/openstack.html /camel-quarkus/next/reference/extensions/openstack.html
-Redirect 301 /camel-quarkus/latest/extensions/opentracing.html /camel-quarkus/next/reference/extensions/opentracing.html
-Redirect 301 /camel-quarkus/latest/extensions/paho.html /camel-quarkus/next/reference/extensions/paho.html
-Redirect 301 /camel-quarkus/latest/extensions/pdf.html /camel-quarkus/next/reference/extensions/pdf.html
-Redirect 301 /camel-quarkus/latest/extensions/platform-http.html /camel-quarkus/next/reference/extensions/platform-http.html
-Redirect 301 /camel-quarkus/latest/extensions/protobuf.html /camel-quarkus/next/reference/extensions/protobuf.html
-Redirect 301 /camel-quarkus/latest/extensions/pubnub.html /camel-quarkus/next/reference/extensions/pubnub.html
-Redirect 301 /camel-quarkus/latest/extensions/quartz.html /camel-quarkus/next/reference/extensions/quartz.html
-Redirect 301 /camel-quarkus/latest/extensions/qute.html /camel-quarkus/next/reference/extensions/qute.html
-Redirect 301 /camel-quarkus/latest/extensions/rabbitmq.html /camel-quarkus/next/reference/extensions/rabbitmq.html
-Redirect 301 /camel-quarkus/latest/extensions/reactive-executor.html /camel-quarkus/next/reference/extensions/reactive-executor.html
-Redirect 301 /camel-quarkus/latest/extensions/reactive-streams.html /camel-quarkus/next/reference/extensions/reactive-streams.html
-Redirect 301 /camel-quarkus/latest/extensions/ref.html /camel-quarkus/next/reference/extensions/ref.html
-Redirect 301 /camel-quarkus/latest/extensions/rest-openapi.html /camel-quarkus/next/reference/extensions/rest-openapi.html
-Redirect 301 /camel-quarkus/latest/extensions/rest.html /camel-quarkus/next/reference/extensions/rest.html
-Redirect 301 /camel-quarkus/latest/extensions/salesforce.html /camel-quarkus/next/reference/extensions/salesforce.html
-Redirect 301 /camel-quarkus/latest/extensions/sap-netweaver.html /camel-quarkus/next/reference/extensions/sap-netweaver.html
-Redirect 301 /camel-quarkus/latest/extensions/scheduler.html /camel-quarkus/next/reference/extensions/scheduler.html
-Redirect 301 /camel-quarkus/latest/extensions/seda.html /camel-quarkus/next/reference/extensions/seda.html
-Redirect 301 /camel-quarkus/latest/extensions/servicenow.html /camel-quarkus/next/reference/extensions/servicenow.html
-Redirect 301 /camel-quarkus/latest/extensions/servlet.html /camel-quarkus/next/reference/extensions/servlet.html
-Redirect 301 /camel-quarkus/latest/extensions/sjms.html /camel-quarkus/next/reference/extensions/sjms.html
-Redirect 301 /camel-quarkus/latest/extensions/sjms2.html /camel-quarkus/next/reference/extensions/sjms2.html
-Redirect 301 /camel-quarkus/latest/extensions/slack.html /camel-quarkus/next/reference/extensions/slack.html
-Redirect 301 /camel-quarkus/latest/extensions/smallrye-reactive-messaging.html /camel-quarkus/next/reference/extensions/smallrye-reactive-messaging.html
-Redirect 301 /camel-quarkus/latest/extensions/snakeyaml.html /camel-quarkus/next/reference/extensions/snakeyaml.html
-Redirect 301 /camel-quarkus/latest/extensions/soap.html /camel-quarkus/next/reference/extensions/soap.html
-Redirect 301 /camel-quarkus/latest/extensions/sql.html /camel-quarkus/next/reference/extensions/sql.html
-Redirect 301 /camel-quarkus/latest/extensions/stream.html /camel-quarkus/next/reference/extensions/stream.html
-Redirect 301 /camel-quarkus/latest/extensions/tagsoup.html /camel-quarkus/next/reference/extensions/tagsoup.html
-Redirect 301 /camel-quarkus/latest/extensions/tarfile.html /camel-quarkus/next/reference/extensions/tarfile.html
-Redirect 301 /camel-quarkus/latest/extensions/telegram.html /camel-quarkus/next/reference/extensions/telegram.html
-Redirect 301 /camel-quarkus/latest/extensions/tika.html /camel-quarkus/next/reference/extensions/tika.html
-Redirect 301 /camel-quarkus/latest/extensions/timer.html /camel-quarkus/next/reference/extensions/timer.html
-Redirect 301 /camel-quarkus/latest/extensions/twitter.html /camel-quarkus/next/reference/extensions/twitter.html
-Redirect 301 /camel-quarkus/latest/extensions/validator.html /camel-quarkus/next/reference/extensions/validator.html
-Redirect 301 /camel-quarkus/latest/extensions/vertx.html /camel-quarkus/next/reference/extensions/vertx.html
-Redirect 301 /camel-quarkus/latest/extensions/vm.html /camel-quarkus/next/reference/extensions/vm.html
-Redirect 301 /camel-quarkus/latest/extensions/websocket-jsr356.html /camel-quarkus/next/reference/extensions/websocket-jsr356.html
-Redirect 301 /camel-quarkus/latest/extensions/xml-io.html /camel-quarkus/next/reference/extensions/xml-io.html
-Redirect 301 /camel-quarkus/latest/extensions/xml-jaxb.html /camel-quarkus/next/reference/extensions/xml-jaxb.html
-Redirect 301 /camel-quarkus/latest/extensions/xml-jaxp.html /camel-quarkus/next/reference/extensions/xml-jaxp.html
-Redirect 301 /camel-quarkus/latest/extensions/xpath.html /camel-quarkus/next/reference/extensions/xpath.html
-Redirect 301 /camel-quarkus/latest/extensions/xslt.html /camel-quarkus/next/reference/extensions/xslt.html
-Redirect 301 /camel-quarkus/latest/extensions/xstream.html /camel-quarkus/next/reference/extensions/xstream.html
-Redirect 301 /camel-quarkus/latest/extensions/zip-deflater.html /camel-quarkus/next/reference/extensions/zip-deflater.html
-Redirect 301 /camel-quarkus/latest/extensions/zipfile.html /camel-quarkus/next/reference/extensions/zipfile.html
-# camel-quarkus end
# camel-kafka-connect start
Redirect 301 /camel-kafka-connector/latest/connectors.html /camel-kafka-connector/latest/reference/index.html
# camel-kafka-connect end
@@ -1283,31 +1102,8 @@ Redirect 301 /blog/release-3-4-4.html /blog/2020/09/RELEASE-3.4.4/
Redirect 301 /blog/release-3-5-0.html /blog/2020/09/RELEASE-3.5.0/
Redirect 301 /blog/release-3-6-0.html /blog/2020/09/RELEASE-3.6.0/
-# if the request can serve the file, serve it don't evaluate rules below
-RewriteCond %{REQUEST_FILENAME} !-f
-
-# request for `/<Antora component>` with either `/latest` or not `/next`,
-# eating up the next `/` if it exists and capturing everything after that
-# get redirected to `/<Antora component>/next/<what was captured>`
-# NOTES:
-# * no / at the beginning in the rule, i.e. starts with `^(components...`
-# as `RewriteBase` is set to `/`, so no slash prefix here
-# * first group captures the current component name
-# * next group eats `/latest` or doesn't match `/next` but consumes both
-# the negative match against `/next` is to prevent redirect loops for
-# urls with `/next` in them (e.g. `/<Antora component/next/...`)
-# * optionaly matching `/` consumes the `/` if it's there so we can
-# add the `/` so `/components/next` becomes `/components/next/` but
-# `/components/next/` doesn't become `/components/next//`
-# * we need to be careful with Antora componets with the same prefixes
-# e.g. camel-k, camel-karaf and camel-kafka-connector, so we don't match
-# partialy and capture the rest of the Antora component name in subsequent
-# groups, that's why we have the negative lookahead in the camel-k option
-RewriteRule ^(components|camel-spring-boot|(?:camel-k(?!afka-connector|araf|amelets)|camel-kafka-connector|camel-karaf|camel-kamelets)|camel-quarkus)(?|(/latest)|(?!/next))/?(.*)$ /$1/next/$3 [R=permanent,L]
-
-# manual is now unversioned
-Redirect 301 /manual/latest/ /manual/
-Redirect 301 /manual/latest /manual/
+<!-- inject:htaccess -->
+<!-- endinject -->
# Disable the pattern matching based on filenames.
#
diff --git a/tests/redirect.sh b/tests/redirect.sh
index da3ba19..49e8124 100755
--- a/tests/redirect.sh
+++ b/tests/redirect.sh
@@ -1,4 +1,4 @@
-#!/bin/env bash
+#!/bin/sh
BASE_URL="${1:-https://localhost}"
@@ -16,72 +16,91 @@ function test {
fi
}
-test $BASE_URL/components 301 $BASE_URL/components/next/
-test $BASE_URL/components/ 301 $BASE_URL/components/next/
+C_V="3.13.x"
+CK_V="1.6.x"
+CKC_V="0.11.0"
+CQ_V="2.4.x"
+
+test $BASE_URL/components 302 $BASE_URL/components/${C_V}/
+test $BASE_URL/components/ 302 $BASE_URL/components/${C_V}/
test $BASE_URL/components/next 301 $BASE_URL/components/next/
test $BASE_URL/components/next/ 200
-test $BASE_URL/components/latest 301 $BASE_URL/components/next/
-test $BASE_URL/components/latest/ 301 $BASE_URL/components/next/
-test $BASE_URL/components/latest/activemq-component.html 301 $BASE_URL/components/next/activemq-component.html
+test $BASE_URL/components/latest 302 $BASE_URL/components/${C_V}
+test $BASE_URL/components/latest/ 302 $BASE_URL/components/${C_V}/
+test $BASE_URL/components/activemq-component.html 302 $BASE_URL/components/${C_V}/activemq-component.html
+test $BASE_URL/components/latest/activemq-component.html 302 $BASE_URL/components/${C_V}/activemq-component.html
+test $BASE_URL/components/${C_V}/activemq-component.html 200
test $BASE_URL/components/next/activemq-component.html 200
-test $BASE_URL/camel-spring-boot 301 $BASE_URL/camel-spring-boot/next/
-test $BASE_URL/camel-spring-boot/ 301 $BASE_URL/camel-spring-boot/next/
+test $BASE_URL/camel-spring-boot 302 $BASE_URL/camel-spring-boot/${C_V}/
+test $BASE_URL/camel-spring-boot/ 302 $BASE_URL/camel-spring-boot/${C_V}/
test $BASE_URL/camel-spring-boot/next 301 $BASE_URL/camel-spring-boot/next/
test $BASE_URL/camel-spring-boot/next/ 200
-test $BASE_URL/camel-spring-boot/latest 301 $BASE_URL/camel-spring-boot/next/
-test $BASE_URL/camel-spring-boot/latest/ 301 $BASE_URL/camel-spring-boot/next/
-test $BASE_URL/camel-spring-boot/latest/list.html 301 $BASE_URL/camel-spring-boot/next/list.html
+test $BASE_URL/camel-spring-boot/latest 302 $BASE_URL/camel-spring-boot/${C_V}
+test $BASE_URL/camel-spring-boot/latest/ 302 $BASE_URL/camel-spring-boot/${C_V}/
+test $BASE_URL/camel-spring-boot/list.html 302 $BASE_URL/camel-spring-boot/${C_V}/list.html
+test $BASE_URL/camel-spring-boot/latest/list.html 302 $BASE_URL/camel-spring-boot/${C_V}/list.html
+test $BASE_URL/camel-spring-boot/${C_V}/list.html 200
test $BASE_URL/camel-spring-boot/next/list.html 200
-test $BASE_URL/camel-k 301 $BASE_URL/camel-k/next/
-test $BASE_URL/camel-k/ 301 $BASE_URL/camel-k/next/
+test $BASE_URL/camel-k 302 $BASE_URL/camel-k/${CK_V}/
+test $BASE_URL/camel-k/ 302 $BASE_URL/camel-k/${CK_V}/
test $BASE_URL/camel-k/next 301 $BASE_URL/camel-k/next/
test $BASE_URL/camel-k/next/ 200
-test $BASE_URL/camel-k/latest 301 $BASE_URL/camel-k/next/
-test $BASE_URL/camel-k/latest/ 301 $BASE_URL/camel-k/next/
-test $BASE_URL/camel-k/latest/traits/master.html 301 $BASE_URL/camel-k/next/traits/master.html
+test $BASE_URL/camel-k/latest 302 $BASE_URL/camel-k/${CK_V}
+test $BASE_URL/camel-k/latest/ 302 $BASE_URL/camel-k/${CK_V}/
+test $BASE_URL/camel-k/traits/master.html 302 $BASE_URL/camel-k/${CK_V}/traits/master.html
+test $BASE_URL/camel-k/latest/traits/master.html 302 $BASE_URL/camel-k/${CK_V}/traits/master.html
+test $BASE_URL/camel-k/${CK_V}/traits/master.html 200
test $BASE_URL/camel-k/next/traits/master.html 200
-test $BASE_URL/camel-karaf 301 $BASE_URL/camel-karaf/next/
-test $BASE_URL/camel-karaf/ 301 $BASE_URL/camel-karaf/next/
+test $BASE_URL/camel-karaf 302 $BASE_URL/camel-karaf/${C_V}/
+test $BASE_URL/camel-karaf/ 302 $BASE_URL/camel-karaf/${C_V}/
test $BASE_URL/camel-karaf/next 301 $BASE_URL/camel-karaf/next/
test $BASE_URL/camel-karaf/next/ 200
-test $BASE_URL/camel-karaf/latest 301 $BASE_URL/camel-karaf/next/
-test $BASE_URL/camel-karaf/latest/ 301 $BASE_URL/camel-karaf/next/
-test $BASE_URL/camel-karaf/latest/components.html 301 $BASE_URL/camel-karaf/next/components.html
+test $BASE_URL/camel-karaf/latest 302 $BASE_URL/camel-karaf/${C_V}
+test $BASE_URL/camel-karaf/latest/ 302 $BASE_URL/camel-karaf/${C_V}/
+test $BASE_URL/camel-karaf/latest/components.html 302 $BASE_URL/camel-karaf/${C_V}/components.html
+test $BASE_URL/camel-karaf/latest/components.html 302 $BASE_URL/camel-karaf/${C_V}/components.html
+test $BASE_URL/camel-karaf/${C_V}/components.html 200
test $BASE_URL/camel-karaf/next/components.html 200
-test $BASE_URL/camel-kafka-connector 301 $BASE_URL/camel-kafka-connector/next/
-test $BASE_URL/camel-kafka-connector/ 301 $BASE_URL/camel-kafka-connector/next/
+test $BASE_URL/camel-kafka-connector 302 $BASE_URL/camel-kafka-connector/${CKC_V}/
+test $BASE_URL/camel-kafka-connector/ 302 $BASE_URL/camel-kafka-connector/${CKC_V}/
test $BASE_URL/camel-kafka-connector/next 301 $BASE_URL/camel-kafka-connector/next/
test $BASE_URL/camel-kafka-connector/next/ 200
-test $BASE_URL/camel-kafka-connector/latest 301 $BASE_URL/camel-kafka-connector/next/
-test $BASE_URL/camel-kafka-connector/latest/ 301 $BASE_URL/camel-kafka-connector/next/
-test $BASE_URL/camel-kafka-connector/latest/contributor-guide/release-guide.html 301 $BASE_URL/camel-kafka-connector/next/contributor-guide/release-guide.html
+test $BASE_URL/camel-kafka-connector/latest 302 $BASE_URL/camel-kafka-connector/${CKC_V}
+test $BASE_URL/camel-kafka-connector/latest/ 302 $BASE_URL/camel-kafka-connector/${CKC_V}/
+test $BASE_URL/camel-kafka-connector/contributor-guide/release-guide.html 302 $BASE_URL/camel-kafka-connector/${CKC_V}/contributor-guide/release-guide.html
+test $BASE_URL/camel-kafka-connector/latest/contributor-guide/release-guide.html 302 $BASE_URL/camel-kafka-connector/${CKC_V}/contributor-guide/release-guide.html
+test $BASE_URL/camel-kafka-connector/${CKC_V}/contributor-guide/release-guide.html 200
test $BASE_URL/camel-kafka-connector/next/contributor-guide/release-guide.html 200
-test $BASE_URL/camel-kamelets 301 $BASE_URL/camel-kamelets/next/
-test $BASE_URL/camel-kamelets/ 301 $BASE_URL/camel-kamelets/next/
+test $BASE_URL/camel-kamelets 302 $BASE_URL/camel-kamelets/next/
+test $BASE_URL/camel-kamelets/ 302 $BASE_URL/camel-kamelets/next/
test $BASE_URL/camel-kamelets/next 301 $BASE_URL/camel-kamelets/next/
test $BASE_URL/camel-kamelets/next/ 200
-test $BASE_URL/camel-kamelets/latest 301 $BASE_URL/camel-kamelets/next/
-test $BASE_URL/camel-kamelets/latest/ 301 $BASE_URL/camel-kamelets/next/
-test $BASE_URL/camel-kamelets/latest/github-source.html 301 $BASE_URL/camel-kamelets/next/github-source.html
+test $BASE_URL/camel-kamelets/latest 302 $BASE_URL/camel-kamelets/next
+test $BASE_URL/camel-kamelets/latest/ 302 $BASE_URL/camel-kamelets/next/
+test $BASE_URL/camel-kamelets/github-source.html 302 $BASE_URL/camel-kamelets/next/github-source.html
+test $BASE_URL/camel-kamelets/latest/github-source.html 302 $BASE_URL/camel-kamelets/next/github-source.html
+test $BASE_URL/camel-kamelets/next/github-source.html 200
test $BASE_URL/camel-kamelets/next/github-source.html 200
-test $BASE_URL/camel-quarkus 301 $BASE_URL/camel-quarkus/next/
-test $BASE_URL/camel-quarkus/ 301 $BASE_URL/camel-quarkus/next/
+test $BASE_URL/camel-quarkus 302 $BASE_URL/camel-quarkus/${CQ_V}/
+test $BASE_URL/camel-quarkus/ 302 $BASE_URL/camel-quarkus/${CQ_V}/
test $BASE_URL/camel-quarkus/next 301 $BASE_URL/camel-quarkus/next/
test $BASE_URL/camel-quarkus/next/ 200
-test $BASE_URL/camel-quarkus/latest 301 $BASE_URL/camel-quarkus/next/
-test $BASE_URL/camel-quarkus/latest/ 301 $BASE_URL/camel-quarkus/next/
-test $BASE_URL/camel-quarkus/latest/user-guide/cdi.html 301 $BASE_URL/camel-quarkus/next/user-guide/cdi.html
+test $BASE_URL/camel-quarkus/latest 302 $BASE_URL/camel-quarkus/${CQ_V}
+test $BASE_URL/camel-quarkus/latest/ 302 $BASE_URL/camel-quarkus/${CQ_V}/
+test $BASE_URL/camel-quarkus/user-guide/cdi.html 302 $BASE_URL/camel-quarkus/${CQ_V}/user-guide/cdi.html
+test $BASE_URL/camel-quarkus/latest/user-guide/cdi.html 302 $BASE_URL/camel-quarkus/${CQ_V}/user-guide/cdi.html
+test $BASE_URL/camel-quarkus/${CQ_V}/user-guide/cdi.html 200
test $BASE_URL/camel-quarkus/next/user-guide/cdi.html 200
test $BASE_URL/manual 301 $BASE_URL/manual/
-test $BASE_URL/manual/latest 301 $BASE_URL/manual/
-test $BASE_URL/manual/latest/ 301 $BASE_URL/manual/
-test $BASE_URL/manual/latest/component-dsl.html 301 $BASE_URL/manual/component-dsl.html
+test $BASE_URL/manual/latest 302 $BASE_URL/manual
+test $BASE_URL/manual/latest/ 302 $BASE_URL/manual/
+test $BASE_URL/manual/latest/component-dsl.html 302 $BASE_URL/manual/component-dsl.html
test $BASE_URL/manual/ 200
test $BASE_URL/manual/component-dsl.html 200