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: 'https://github.com/hashicorp/nomad/issues/9506',
    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,
  },
  // `/<path>/index.html` to /<path>
  {
    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,
  },
]
