module.exports = [ // Define your custom redirects within this file. // Vercel's redirect documentation: https://vercel.com/docs/configuration#project/redirects // Playground for testing url pattern matching: https://npm.runkit.com/path-to-regexp { source: '/home', destination: '/', permanent: true, }, // Friendly URL for trial form redirection { source: '/trial', destination: 'https://www.hashicorp.com/products/nomad/trial', permanent: true, }, { source: '/docs/operations/overview', destination: '/docs/operations', permanent: true, }, // This redirect supports a URL built into the Nomad UI, and should always be // directed someplace valid to support the text "Read about Outage Recovery." { source: '/guides/outage.html', destination: 'https://learn.hashicorp.com/tutorials/nomad/outage-recovery', permanent: true, }, // Nomad Learn Redirects { source: '/intro/getting-started', destination: 'https://learn.hashicorp.com/collections/nomad/get-started', permanent: true, }, { source: '/intro/getting-started/install', destination: 'https://learn.hashicorp.com/tutorials/nomad/get-started-install', permanent: true, }, { source: '/intro/getting-started/running', destination: 'https://learn.hashicorp.com/tutorials/nomad/get-started-run', permanent: true, }, { source: '/intro/getting-started/jobs', destination: 'https://learn.hashicorp.com/tutorials/nomad/get-started-jobs', permanent: true, }, { source: '/intro/getting-started/cluster', destination: 'https://learn.hashicorp.com/tutorials/nomad/get-started-cluster', permanent: true, }, { source: '/intro/getting-started/ui', destination: 'https://learn.hashicorp.com/tutorials/nomad/get-started-ui', permanent: true, }, { source: '/intro/getting-started/next-steps', destination: 'https://learn.hashicorp.com/tutorials/nomad/get-started-learn-more', permanent: true, }, { source: '/intro/vs/kubernetes', destination: '/docs/nomad-vs-kubernetes', permanent: true, }, { source: '/intro/who-uses-nomad', destination: '/docs/who-uses/noamd', permanent: true, }, // Guides { source: '/guides/load-balancing', destination: 'https://learn.hashicorp.com/collections/nomad/load-balancing', permanent: true, }, { source: '/guides/load-balancing/fabio', destination: 'https://learn.hashicorp.com/tutorials/nomad/load-balancing-fabio', permanent: true, }, { source: '/guides/load-balancing/nginx', destination: 'https://learn.hashicorp.com/tutorials/nomad/load-balancing-nginx', permanent: true, }, { source: '/guides/load-balancing/haproxy', destination: 'https://learn.hashicorp.com/tutorials/nomad/load-balancing-haproxy', permanent: true, }, { source: '/guides/load-balancing/traefik', destination: 'https://learn.hashicorp.com/tutorials/nomad/load-balancing-traefik', permanent: true, }, { source: '/guides/stateful-workloads', destination: 'https://learn.hashicorp.com/collections/nomad/stateful-workloads', permanent: true, }, { source: '/guides/stateful-workloads/host-volumes', destination: 'https://learn.hashicorp.com/tutorials/nomad/stateful-workloads-host-volumes', permanent: true, }, { source: '/guides/stateful-workloads/portworx', destination: 'https://learn.hashicorp.com/tutorials/nomad/stateful-workloads-portworx', permanent: true, }, { source: '/guides/web-ui', destination: 'https://learn.hashicorp.com/collections/nomad/web-ui', permanent: true, }, { source: '/guides/web-ui/access.html', destination: 'https://learn.hashicorp.com/tutorials/nomad/web-ui-access', permanent: true, }, { source: '/guides/web-ui/accessing', destination: 'https://learn.hashicorp.com/tutorials/nomad/web-ui-access', permanent: true, }, { source: '/guides/web-ui/submitting-a-job', destination: 'https://learn.hashicorp.com/tutorials/nomad/web-ui-workload-info', permanent: true, }, { source: '/guides/web-ui/operating-a-job', destination: 'https://learn.hashicorp.com/tutorials/nomad/web-ui-submit-job', permanent: true, }, { source: '/guides/web-ui/inspecting-the-cluster', destination: 'https://learn.hashicorp.com/tutorials/nomad/web-ui-cluster-info', permanent: true, }, { source: '/guides/web-ui/securing', destination: 'https://learn.hashicorp.com/tutorials/nomad/web-ui-access#access-an-acl-enabled-ui', permanent: true, }, { source: '/guides/governance-and-policy', destination: 'https://learn.hashicorp.com/collections/nomad/governance-and-policy', permanent: true, }, { source: '/guides/governance-and-policy/namespaces', destination: 'https://learn.hashicorp.com/tutorials/nomad/namespaces', permanent: true, }, { source: '/guides/governance-and-policy/quotas', destination: 'https://learn.hashicorp.com/tutorials/nomad/quotas', permanent: true, }, { source: '/guides/governance-and-policy/sentinel/sentinel-policy', destination: 'https://learn.hashicorp.com/tutorials/nomad/sentinel', permanent: true, }, { source: '/guides/governance-and-policy/sentinel/job', destination: 'https://learn.hashicorp.com/tutorials/nomad/sentinel', permanent: true, }, // /s/* redirects for useful links that need a stable URL but we may need to // change its destination in the future. { source: '/s/port-plan-failure', destination: '/docs/operations/monitoring-nomad#progress', permanent: false, }, // Spark guide links are all repointed to deprecated nomad-spark repo { source: '/guides/spark', destination: 'https://github.com/hashicorp/nomad-spark', permanent: true, }, { source: '/guides/spark/:splat*', destination: 'https://github.com/hashicorp/nomad-spark', permanent: true, }, { source: '/guides/analytical-workloads', destination: 'https://github.com/hashicorp/nomad-spark', permanent: true, }, { source: '/guides/analytical-workloads/:splat*', destination: 'https://github.com/hashicorp/nomad-spark', permanent: true, }, // These are subsumed in the splat over analytical-workloads, but I'm keeping them here in case // we want to reclaim the slug "analytical-workloads" at some point and deal with some bad links. // { // source: '/guides/analytical-workloads/spark/spark', // destination: 'https://github.com/hashicorp/nomad-spark', // permanent: true, // }, { source: '/guides/operating-a-job', destination: 'https://learn.hashicorp.com/collections/nomad/manage-jobs', permanent: true, }, { source: '/guides/operating-a-job/accessing-logs', destination: 'https://learn.hashicorp.com/tutorials/nomad/jobs-accessing-logs', permanent: true, }, { source: '/guides/operating-a-job/configuring-tasks', destination: 'https://learn.hashicorp.com/tutorials/nomad/jobs-configuring', permanent: true, }, { source: '/guides/operating-a-job/external', destination: 'https://learn.hashicorp.com/collections/nomad/plugins', permanent: true, }, { source: '/guides/operating-a-job/external/lxc', destination: 'https://learn.hashicorp.com/tutorials/nomad/plugin-lxc', permanent: true, }, { source: '/guides/operating-a-job/inspecting-state', destination: 'https://learn.hashicorp.com/tutorials/nomad/jobs-inspec', permanent: true, }, { source: '/guides/operating-a-job/resource-utilization', destination: 'https://learn.hashicorp.com/tutorials/nomad/jobs-utilization', permanent: true, }, { source: '/guides/operating-a-job/submitting-jobs', destination: 'https://learn.hashicorp.com/tutorials/nomad/jobs-submit', permanent: true, }, { source: '/guides/operating-a-job/advanced-scheduling/advanced-scheduling', destination: 'https://learn.hashicorp.com/collections/nomad/advanced-scheduling', permanent: true, }, { source: '/guides/operating-a-job/advanced-scheduling/affinity', destination: 'https://learn.hashicorp.com/tutorials/nomad/affinity', permanent: true, }, { source: '/guides/operating-a-job/advanced-scheduling/preemption-service-batch', destination: 'https://learn.hashicorp.com/tutorials/nomad/preemption', permanent: true, }, { source: '/guides/operating-a-job/advanced-scheduling/spread', destination: 'https://learn.hashicorp.com/tutorials/nomad/spread', permanent: true, }, { source: '/guides/operating-a-job/failure-handling-strategies', destination: 'https://learn.hashicorp.com/collections/nomad/job-failure-handling', permanent: true, }, { source: '/guides/operating-a-job/failure-handling-strategies/check-restart', destination: 'https://learn.hashicorp.com/tutorials/nomad/failures-check-restart', permanent: true, }, { source: '/guides/operating-a-job/failure-handling-strategies/reschedule', destination: 'https://learn.hashicorp.com/tutorials/nomad/failures-reschedule', permanent: true, }, { source: '/guides/operating-a-job/failure-handling-strategies/restart', destination: 'https://learn.hashicorp.com/tutorials/nomad/failures-restart', permanent: true, }, { source: '/guides/operating-a-job/update-strategies', destination: 'https://learn.hashicorp.com/tutorials/nomad/job-update-strategies', permanent: true, }, { source: '/guides/operating-a-job/update-strategies/blue-green-and-canary-deployments', destination: 'https://learn.hashicorp.com/tutorials/nomad/job-blue-green-and-canary-deployments', permanent: true, }, { source: '/guides/operating-a-job/update-strategies/handling-signals', destination: 'https://learn.hashicorp.com/tutorials/nomad/job-update-handle-signals', permanent: true, }, { source: '/guides/operating-a-job/update-strategies/rolling-upgrades', destination: 'https://learn.hashicorp.com/tutorials/nomad/job-rolling-update', permanent: true, }, { source: '/guides/operations', destination: 'https://learn.hashicorp.com/collections/nomad/manage-clusters', permanent: true, }, { source: '/guides/operations/autopilot', destination: 'https://learn.hashicorp.com/tutorials/nomad/autopilot', permanent: true, }, { source: '/guides/operations/cluster/automatic', destination: 'https://learn.hashicorp.com/tutorials/nomad/clustering', permanent: true, }, { source: '/guides/operations/cluster/bootstrapping', destination: 'https://learn.hashicorp.com/tutorials/nomad/clustering', permanent: true, }, { source: '/guides/operations/cluster/cloud_auto_join', destination: 'https://learn.hashicorp.com/tutorials/nomad/clustering', permanent: true, }, { source: '/guides/operations/cluster/manual', destination: 'https://learn.hashicorp.com/tutorials/nomad/clustering', permanent: true, }, { source: '/guides/operations/federation', destination: 'https://learn.hashicorp.com/tutorials/nomad/federation', permanent: true, }, { source: '/guides/operations/monitoring-and-alerting/monitoring', destination: 'https://learn.hashicorp.com/tutorials/nomad/prometheus-metrics', permanent: true, }, { source: '/guides/operations/monitoring-and-alerting/prometheus-metrics', destination: 'https://learn.hashicorp.com/tutorials/nomad/prometheus-metrics', permanent: true, }, { source: '/guides/operations/monitoring/nomad-metrics', destination: 'https://learn.hashicorp.com/tutorials/nomad/prometheus-metrics', permanent: true, }, { source: '/guides/operations/node-draining', destination: 'https://learn.hashicorp.com/tutorials/nomad/node-drain', permanent: true, }, { source: '/guides/operations/outage', destination: 'https://learn.hashicorp.com/tutorials/nomad/outage-recovery', permanent: true, }, { source: '/guides/security', destination: 'https://learn.hashicorp.com/collections/nomad/access-control', permanent: true, }, { source: '/guides/security/acl', destination: 'https://learn.hashicorp.com/collections/nomad/access-control', permanent: true, }, { source: '/guides/security/encryption', destination: 'https://learn.hashicorp.com/tutorials/nomad/security-gossip-encryption', permanent: true, }, { source: '/guides/security/securing-nomad', destination: 'https://learn.hashicorp.com/tutorials/nomad/security-enable-tls', permanent: true, }, { source: '/guides/security/vault-pki-integration', destination: 'https://learn.hashicorp.com/tutorials/nomad/vault-pki-nomad', permanent: true, }, // Multi-part UI guides { source: '/guides/ui', destination: 'https://learn.hashicorp.com/collections/nomad/web-ui', permanent: true, }, // Website // Docs { source: '/docs/index', destination: '/docs', permanent: true, }, { source: '/api/index', destination: '/api-docs', permanent: true, }, { source: '/api-docs/index', destination: '/api-docs', permanent: true, }, { source: '/docs/agent/config', destination: '/docs/configuration', permanent: true, }, { source: '/docs/devices/nvidia', destination: '/plugins/devices/nvidia', permanent: true, }, { source: '/docs/jobops', destination: 'https://learn.hashicorp.com/collections/nomad/manage-jobs', permanent: true, }, { source: '/docs/jobops/taskconfig', destination: 'https://learn.hashicorp.com/tutorials/nomad/jobs-configuring', permanent: true, }, { source: '/docs/jobops/inspecting', destination: 'https://learn.hashicorp.com/tutorials/nomad/jobs-inspect', permanent: true, }, { source: '/docs/jobops/resources', destination: 'https://learn.hashicorp.com/tutorials/nomad/jobs-utilization', permanent: true, }, { source: '/docs/jobops/logs', destination: 'https://learn.hashicorp.com/tutorials/nomad/jobs-accessing-logs', permanent: true, }, { source: '/docs/jobops/updating', destination: 'https://learn.hashicorp.com/collections/nomad/job-updates', permanent: true, }, { source: '/docs/jobops/servicediscovery', destination: '/docs/integrations/consul-integration', permanent: true, }, { source: '/docs/jobspec', destination: '/docs/job-specification', permanent: true, }, { source: '/docs/jobspec/interpreted', destination: '/docs/runtime/interpolation', permanent: true, }, { source: '/docs/jobspec/json', destination: '/api-docs/json-jobs', permanent: true, }, { source: '/docs/jobspec/environment', destination: '/docs/runtime/environment', permanent: true, }, { source: '/docs/jobspec/schedulers', destination: '/docs/schedulers', permanent: true, }, { source: '/docs/jobspec/servicediscovery', destination: '/docs/job-specification/service', permanent: true, }, { source: '/docs/jobspec/networking', destination: '/docs/job-specification/network', permanent: true, }, { source: '/docs/job-specification/index', destination: '/docs/job-specification', permanent: true, }, { source: '/docs/cluster/automatic', destination: 'https://learn.hashicorp.com/tutorials/nomad/clustering', permanent: true, }, { source: '/docs/cluster/manual', destination: 'https://learn.hashicorp.com/tutorials/nomad/clustering', permanent: true, }, { source: '/docs/cluster/federation', destination: 'https://learn.hashicorp.com/tutorials/nomad/federation', permanent: true, }, { source: '/docs/cluster/requirements', destination: '/docs/install/production/requirements/', permanent: true, }, { source: '/docs/commands/operator-index', destination: '/docs/commands/operator', permanent: true, }, { source: '/docs/commands/operator-raft-list-peers', destination: '/docs/commands/operator/raft-list-peers', permanent: true, }, { source: '/docs/commands/operator-raft-remove-peer', destination: '/docs/commands/operator/raft-remove-peer', permanent: true, }, { source: '/docs/commands/job-dispatch', destination: '/docs/commands/job/dispatch', permanent: true, }, { source: '/docs/commands/alloc-status', destination: '/docs/commands/alloc/status', permanent: true, }, { source: '/docs/commands/eval-status', destination: '/docs/commands/eval/status', permanent: true, }, { source: '/docs/commands/fs', destination: '/docs/commands/alloc/fs', permanent: true, }, { source: '/docs/commands/logs', destination: '/docs/commands/alloc/logs', permanent: true, }, { source: '/docs/commands/init', destination: '/docs/commands/job/init', permanent: true, }, { source: '/docs/commands/inspect', destination: '/docs/commands/job/inspect', permanent: true, }, { source: '/docs/commands/run', destination: '/docs/commands/job/run', permanent: true, }, { source: '/docs/commands/stop', destination: '/docs/commands/job/stop', permanent: true, }, { source: '/docs/commands/plan', destination: '/docs/commands/job/plan', permanent: true, }, { source: '/docs/commands/validate', destination: '/docs/commands/job/validate', permanent: true, }, { source: '/docs/commands/client-config', destination: '/docs/commands/node/config', permanent: true, }, { source: '/docs/commands/node-drain', destination: '/docs/commands/node/drain', permanent: true, }, { source: '/docs/commands/node-status', destination: '/docs/commands/node/status', permanent: true, }, { source: '/docs/commands/keygen', destination: '/docs/commands/operator/keygen', permanent: true, }, { source: '/docs/commands/keyring', destination: '/docs/commands/operator/keyring', permanent: true, }, { source: '/docs/commands/server-force-leave', destination: '/docs/commands/server/force-leave', permanent: true, }, { source: '/docs/commands/server-join', destination: '/docs/commands/server/join', permanent: true, }, { source: '/docs/commands/server-members', destination: '/docs/commands/server/members', permanent: true, }, { source: '/docs/runtime/schedulers', destination: '/docs/schedulers', permanent: true, }, // Sometimes code names are too good not to mention { source: '/heartyeet', destination: '/docs/job-specification/group#stop_after_client_disconnect', permanent: true, }, // Moved /docs/drivers/external/podman -> /docs/drivers/podman { source: '/docs/drivers/external/podman', destination: '/plugins/drivers/podman', permanent: true, }, // Moved /docs/operating-a-job/ -> /guides/operating-a-job/ { source: '/docs/operating-a-job', destination: 'https://learn.hashicorp.com/collections/nomad/manage-jobs', permanent: true, }, { source: '/docs/operating-a-job/accessing-logs', destination: 'https://learn.hashicorp.com/tutorials/nomad/jobs-accessing-logs', permanent: true, }, { source: '/docs/operating-a-job/inspecting-state', destination: 'https://learn.hashicorp.com/tutorials/nomad/jobs-inspect', permanent: true, }, { source: '/docs/operating-a-job/resource-utilization', destination: 'https://learn.hashicorp.com/tutorials/nomad/jobs-utilization', permanent: true, }, { source: '/docs/operating-a-job/configuring-tasks', destination: 'https://learn.hashicorp.com/tutorials/nomad/jobs-configuring', permanent: true, }, { source: '/docs/operating-a-job/submitting-jobs', destination: 'https://learn.hashicorp.com/tutorials/nomad/jobs-submit', permanent: true, }, { source: '/docs/operating-a-job/failure-handling-strategies', destination: 'https://learn.hashicorp.com/collections/nomad/job-failure-handling', permanent: true, }, { source: '/docs/operating-a-job/failure-handling-strategies/check-restart', destination: 'https://learn.hashicorp.com/tutorials/nomad/failures-check-restart', permanent: true, }, { source: '/docs/operating-a-job/failure-handling-strategies/reschedule', destination: 'https://learn.hashicorp.com/tutorials/nomad/failures-reschedule', permanent: true, }, { source: '/docs/operating-a-job/failure-handling-strategies/restart', destination: 'https://learn.hashicorp.com/tutorials/nomad/failures-restart', permanent: true, }, { source: '/docs/operating-a-job/update-strategies', destination: 'https://learn.hashicorp.com/collections/nomad/job-updates', permanent: true, }, { source: '/docs/operating-a-job/update-strategies/blue-green-and-canary-deployments', destination: 'https://learn.hashicorp.com/tutorials/nomad/job-blue-green-and-canary-deployments', permanent: true, }, { source: '/docs/operating-a-job/update-strategies/handling-signals', destination: 'https://learn.hashicorp.com/tutorials/nomad/job-update-handle-signals', permanent: true, }, { source: '/docs/operating-a-job/update-strategies/rolling-upgrades', destination: 'https://learn.hashicorp.com/tutorials/nomad/job-rolling-update', permanent: true, }, // Moved /docs/agent/configuration/ -> /docs/configuration/ 301! { source: '/docs/agent/configuration', destination: '/docs/configuration', permanent: true, }, { source: '/docs/agent/configuration/acl', destination: '/docs/configuration/acl', permanent: true, }, { source: '/docs/agent/configuration/autopilot', destination: '/docs/configuration/autopilot', permanent: true, }, { source: '/docs/agent/configuration/client', destination: '/docs/configuration/client', permanent: true, }, { source: '/docs/agent/configuration/consul', destination: '/docs/configuration/consul', permanent: true, }, { source: '/docs/agent/configuration/sentinel', destination: '/docs/configuration/sentinel', permanent: true, }, { source: '/docs/agent/configuration/server', destination: '/docs/configuration/server', permanent: true, }, { source: '/docs/agent/configuration/server_join', destination: '/docs/configuration/server_join', permanent: true, }, { source: '/docs/agent/configuration/telemetry', destination: '/docs/configuration/telemetry', permanent: true, }, { source: '/docs/agent/configuration/tls', destination: '/docs/configuration/tls', permanent: true, }, { source: '/docs/agent/configuration/vault', destination: '/docs/configuration/vault', permanent: true, }, // Moved telemetry under operations { source: '/docs/telemetry', destination: '/docs/operations/telemetry', permanent: true, }, { source: '/docs/telemetry/metrics', destination: '/docs/operations/metrics', permanent: true, }, { source: '/docs/operations/metrics', destination: '/docs/operations/metrics-reference', permanent: true, }, { source: '/docs/operations/telemetry', destination: '/docs/operations/monitoring-nomad', permanent: true, }, // Moved installing agent under operations as ope { source: '/docs/install/production/nomad-agent', destination: '/docs/operations/nomad-agent', permanent: true, }, // Moved guide-like docs to /guides { source: '/docs/agent', destination: '/docs/install/production/nomad-agent/', permanent: true, }, { source: '/docs/agent/cloud_auto_join', destination: 'https://learn.hashicorp.com/tutorials/nomad/clustering', permanent: true, }, { source: '/docs/agent/telemetry', destination: 'https://learn.hashicorp.com/tutorials/nomad/prometheus-metrics', permanent: true, }, { source: '/docs/agent/encryption', destination: 'https://learn.hashicorp.com/tutorials/nomad/security-gossip-encryption', permanent: true, }, { source: '/docs/service-discovery', destination: '/docs/integrations/consul-integration', permanent: true, }, // Redirect old LXC driver doc to new one in /docs/external { source: '/docs/drivers/lxc', destination: '/plugins/drivers/community/lxc', permanent: true, }, { source: '/docs/drivers/rkt', destination: '/plugins/drivers/community/rkt', permanent: true, }, // API { source: '/docs/http/agent-force-leave', destination: '/api-docs/agent', permanent: true, }, { source: '/docs/http/agent-join', destination: '/api-docs/agent', permanent: true, }, { source: '/docs/http/agent-members', destination: '/api-docs/agent', permanent: true, }, { source: '/docs/http/agent-self', destination: '/api-docs/agent', permanent: true, }, { source: '/docs/http/agent-servers', destination: '/api-docs/agent', permanent: true, }, { source: '/docs/http/alloc', destination: '/api-docs/allocations', permanent: true, }, { source: '/docs/http/allocs', destination: '/api-docs/allocations', permanent: true, }, { source: '/docs/http/client-allocation-stats', destination: '/api-docs/client', permanent: true, }, { source: '/docs/http/client-fs', destination: '/api-docs/client', permanent: true, }, { source: '/docs/http/client-stats', destination: '/api-docs/client', permanent: true, }, { source: '/docs/http/eval', destination: '/api-docs/evaluations', permanent: true, }, { source: '/docs/http/evals', destination: '/api-docs/evaluations', permanent: true, }, { source: '/docs/http', destination: '/api-docs', permanent: true, }, { source: '/docs/http/job', destination: '/api-docs/jobs', permanent: true, }, { source: '/docs/http/jobs', destination: '/api-docs/jobs', permanent: true, }, { source: '/docs/http/json-jobs', destination: '/api-docs/json-jobs', permanent: true, }, { source: '/docs/http/node', destination: '/api-docs/nodes', permanent: true, }, { source: '/docs/http/nodes', destination: '/api-docs/nodes', permanent: true, }, { source: '/docs/http/operator', destination: '/api-docs/operator', permanent: true, }, { source: '/docs/http/regions', destination: '/api-docs/regions', permanent: true, }, { source: '/docs/http/status', destination: '/api-docs/status', permanent: true, }, { source: '/docs/http/system', destination: '/api-docs/system', permanent: true, }, // Guides // Reorganized Guides by Persona { source: '/guides/autopilot', destination: 'https://learn.hashicorp.com/tutorials/nomad/autopilot', permanent: true, }, { source: '/guides/cluster/automatic', destination: 'https://learn.hashicorp.com/tutorials/nomad/clustering', permanent: true, }, { source: '/guides/cluster/bootstrapping', destination: 'https://learn.hashicorp.com/tutorials/nomad/clustering', permanent: true, }, { source: '/guides/operations/cluster/bootstrapping', destination: 'https://learn.hashicorp.com/tutorials/nomad/clustering', permanent: true, }, { source: '/guides/cluster/manual', destination: 'https://learn.hashicorp.com/tutorials/nomad/clustering', permanent: true, }, { source: '/guides/cluster/federation', destination: 'https://learn.hashicorp.com/tutorials/nomad/federation', permanent: true, }, { source: '/guides/cluster/requirements', destination: '/docs/install/production/requirements', permanent: true, }, { source: '/guides/nomad-metrics', destination: 'https://learn.hashicorp.com/tutorials/nomad/prometheus-metrics', permanent: true, }, { source: '/guides/node-draining', destination: 'https://learn.hashicorp.com/tutorials/nomad/node-drain', permanent: true, }, { source: '/guides/outage', destination: 'https://learn.hashicorp.com/tutorials/nomad/outage-recovery', permanent: true, }, { source: '/guides/acl', destination: 'https://learn.hashicorp.com/collections/nomad/access-control', permanent: true, }, { source: '/guides/namespaces', destination: 'https://learn.hashicorp.com/tutorials/nomad/namespaces', permanent: true, }, { source: '/guides/quotas', destination: 'https://learn.hashicorp.com/tutorials/nomad/quotas', permanent: true, }, { source: '/guides/securing-nomad', destination: 'https://learn.hashicorp.com/tutorials/nomad/security-enable-tls', permanent: true, }, { source: '/guides/sentinel-policy', destination: 'https://learn.hashicorp.com/tutorials/nomad/sentinel', permanent: true, }, { source: '/guides/sentinel/job', destination: 'https://learn.hashicorp.com/tutorials/nomad/sentinel', permanent: true, }, { source: '/guides/security/namespaces', destination: 'https://learn.hashicorp.com/tutorials/nomad/namespaces', permanent: true, }, { source: '/guides/security/quotas', destination: 'https://learn.hashicorp.com/tutorials/nomad/quotas', permanent: true, }, { source: '/guides/security/sentinel/job', destination: 'https://learn.hashicorp.com/tutorials/nomad/quotas', permanent: true, }, { source: '/guides/security/sentinel-policy', destination: 'https://learn.hashicorp.com/tutorials/nomad/sentinel', permanent: true, }, { source: '/guides/operations/install/index', destination: '/docs/install', permanent: true, }, { source: '/guides/operations/agent/index', destination: '/docs/install/production/nomad-agent', permanent: true, }, { source: '/guides/operations/requirements', destination: '/docs/install/production/requirements', permanent: true, }, { source: '/guides/operations/consul-integration/index', destination: '/docs/integrations/consul-integration', permanent: true, }, { source: '/guides/operations/vault-integration/index', destination: '/docs/integrations/vault-integration', permanent: true, }, { source: '/guides/advanced-scheduling', destination: 'https://learn.hashicorp.com/collections/nomad/advanced-scheduling', permanent: true, }, { source: '/guides/external', destination: 'https://learn.hashicorp.com/collections/nomad/plugins', permanent: true, }, { source: '/guides/external/lxc', destination: 'https://learn.hashicorp.com/tutorials/nomad/plugin-lxc', permanent: true, }, { source: '/guides/operations/upgrade', destination: '/docs/upgrade', permanent: true, }, { source: '/guides/operations/upgrade/upgrade-specific', destination: '/docs/upgrade/upgrade-specific', permanent: true, }, { source: '/guides/upgrade', destination: '/docs/upgrade', permanent: true, }, { source: '/guides/upgrade/upgrade-specific', destination: '/docs/upgrade/upgrade-specific', permanent: true, }, { source: '/guides/operations/deployment-guide', destination: 'https://learn.hashicorp.com/tutorials/nomad/production-deployment-guide-vm-with-consul', permanent: true, }, { source: '/guides/operations/reference-architecture', destination: 'https://learn.hashicorp.com/tutorials/nomad/production-reference-architecture-vm-with-consul', permanent: true, }, { source: '/docs/install/production/deployment-guide', destination: 'https://learn.hashicorp.com/tutorials/nomad/production-deployment-guide-vm-with-consul', permanent: true, }, { source: '/docs/install/production/reference-architecture', destination: 'https://learn.hashicorp.com/tutorials/nomad/production-reference-architecture-vm-with-consul', permanent: true, }, // Enterprise // Reorganized Enterprise into single pager { source: '/docs/enterprise/namespaces', destination: '/docs/enterprise#namespaces', permanent: true, }, { source: '/docs/enterprise/quotas', destination: '/docs/enterprise#resource-quotas', permanent: true, }, { source: '/docs/enterprise/preemption', destination: '/docs/enterprise#preemption', permanent: true, }, { source: '/docs/enterprise/sentinel', destination: '/docs/enterprise#sentinel-policies', permanent: true, }, { source: '/docs/enterprise/autopilot', destination: '/docs/enterprise#nomad-enterprise-platform', permanent: true, }, // Guide Catch-all Redirects { source: '/guides/:splat*', destination: 'https://learn.hashicorp.com/nomad', permanent: true, }, // Vault Integration { source: '/docs/vault-integration', destination: '/docs/integrations/vault-integration', permanent: true, }, // Old resources -> Community { source: '/resources', destination: '/community', permanent: true, }, // `//index.html` to / { source: '/:splat*/index.html', destination: '/:splat*', permanent: true, }, // `.html` to non-`.html` { source: '/:splat(.*).html', destination: '/:splat', permanent: true, }, // Extracted content into `/plugins` & `/tools` { source: '/docs/autoscaling', destination: '/tools/autoscaling', permanent: true, }, { source: '/docs/autoscaling/:splat*', destination: '/tools/autoscaling/:splat*', permanent: true, }, // Extracted content into `/plugins` & `/tools`; // - Redirect individual pages so we don't conflict with // "built-in plugins" pages { source: '/docs/devices/external', destination: '/plugins/devices/community', permanent: true, }, { source: '/docs/devices/external/usb', destination: '/plugins/devices/community/usb', permanent: true, }, { source: '/docs/devices/external/nvidia', destination: '/plugins/devices/nvidia', permanent: true, }, { source: '/docs/drivers/external/containerd', destination: '/plugins/drivers/community/containerd', permanent: true, }, { source: '/docs/drivers/external/firecracker-task-driver', destination: '/plugins/drivers/community/firecracker-task-driver', permanent: true, }, { source: '/docs/drivers/external/iis', destination: '/plugins/drivers/community/iis', permanent: true, }, { source: '/docs/drivers/external', destination: '/plugins/drivers/community', permanent: true, }, { source: '/docs/drivers/external/jail-task-driver', destination: '/plugins/drivers/community/jail-task-driver', permanent: true, }, { source: '/docs/drivers/external/lightrun', destination: '/plugins/drivers/community/lightrun', permanent: true, }, { source: '/docs/drivers/external/lxc', destination: '/plugins/drivers/community/lxc', permanent: true, }, { source: '/docs/drivers/external/nspawn', destination: '/plugins/drivers/community/nspawn', permanent: true, }, { source: '/docs/drivers/external/pot', destination: '/plugins/drivers/community/pot', permanent: true, }, { source: '/docs/drivers/external/rkt', destination: '/plugins/drivers/community/rkt', permanent: true, }, { source: '/docs/drivers/external/rookout', destination: '/plugins/drivers/community/rookout', permanent: true, }, { source: '/docs/drivers/external/singularity', destination: '/plugins/drivers/community/singularity', permanent: true, }, { source: '/docs/drivers/podman', destination: '/plugins/drivers/podman', permanent: true, }, { source: '/docs/drivers/remote/ecs', destination: '/plugins/drivers/remote/ecs', permanent: true, }, { source: '/docs/drivers/remote', destination: '/plugins/drivers/remote', permanent: true, }, { source: '/api/:path*', destination: '/api-docs/:path*', permanent: true, }, // Redirects for exact versioned-docs to respective generic versions { source: '/:base(docs|api-docs)/v1.:minor([0-2]{1,}).(\\d+)', destination: '/:base/v1.:minor.x', permanent: true, }, { source: '/:base(docs|api-docs)/v1.:minor([0-2]{1,}).(\\d+)/:path*', destination: '/:base/v1.:minor.x/:path', permanent: true, }, ]