Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
---
title: Create a bulk redirect rule using Terraform
pcx_content_type: configuration
sidebar:
order: 6
label: Create bulk redirect using Terraform
---

import { Render } from "~/components";

<Render file="v4-code-snippets" product="terraform" />

The following example defines bulk redirect rules for an account using Terraform. The rule creates a redirect list item and a bulk URL redirect rule from the list to visitors based on the defined redirect list.

```tf
# Cloudflare account ID
variable "cloudflare_account_id" {
default = "<ACCOUNT_ID>"
}

# Bulk redirect list description
variable "bulk_redirect_list_description" {
default = "my bulk redirect description"
}

# Bulk redirect list name
variable "bulk_redirect_list_name" {
default = "my_bulk_redirect_list_name"
}

# Bulk redirect list item
variable "bulk_redirects" {
type = map(object({
source_url = string
target_url = string
status_code = number
}))

default = {
"redirect1" = {
source_url = "https://source.url/redirect/1"
target_url = "https://target.url/?redirect=1"
status_code = 301
}
"redirect2" = {
source_url = "https://source.url/redirect/2"
target_url = "https://target.url/?redirect=2"
status_code = 302
}
"redirect3" = {
source_url = "https://source.url/redirect/3"
target_url = "https://target.url/?redirect=3"
status_code = 307
}
}
}

# Create redirect list
resource "cloudflare_list" "bulk_redirect_to_id" {
account_id = var.cloudflare_account_id
name = var.bulk_redirect_list_name
description = var.bulk_redirect_list_description
kind = "redirect"
}

# Add redirect item into the redirect list
resource "cloudflare_list_item" "bulk_redirect_to_id_item" {
for_each = { for redirect in var.bulk_redirects : "${redirect.source_url}" => redirect }

account_id = var.cloudflare_account_id
list_id = cloudflare_list.bulk_redirect_to_id.id

redirect {
source_url = each.value.source_url
target_url = each.value.target_url
status_code = each.value.status_code
}

depends_on = [
cloudflare_list.bulk_redirect_to_id
]

}

# Create bulk redirect and attach redirect list
resource "cloudflare_ruleset" "bulk_root_redirect_to_id" {
account_id = var.cloudflare_account_id
name = var.bulk_redirect_list_name
description = var.bulk_redirect_list_description
kind = "root"
phase = "http_request_redirect"

rules {
action = "redirect"
action_parameters {
from_list {
name = var.bulk_redirect_list_name
key = "http.request.full_uri"
}
}
expression = "http.request.full_uri in ${"$"}${var.bulk_redirect_list_name}"
description = var.bulk_redirect_list_description
enabled = true
}

depends_on = [
cloudflare_list_item.bulk_redirect_to_id_item
]
}
```

<Render file="terraform-additional-resources" />