Skip to content
Cloudflare Docs

Change URI path and Host header

Last reviewed: about 2 months ago

This guide will instruct you how to modify both the URI path and the Host header of incoming requests using Transform Rules and Origin Rules.

Your website visitors will be routed from https://<YOUR_SOURCE_HOSTNAME>/uploads/* to https://<YOUR_TARGET_HOSTNAME>/*.

In this tutorial you will do the following:

  1. Create a URL rewrite to remove /uploads from the path.
  2. Create an origin rule to modify the Host header to desired hostname.

By following these steps, you can effectively manage both URI paths and Host headers to route traffic appropriately and optimize request handling.

1. Create a URL rewrite

  1. Log in to the Cloudflare dashboard and select your account and domain.

  2. Go to Rules > Overview.

  3. Select Create rule > URL Rewrite Rule.

  4. Enter a descriptive name for the rule in Rule name.

  5. Under If incoming requests match, select Custom filter expression, select Edit expression, and enter the following expression:

    Text in Expression Editor:

    raw.http.request.uri.path matches "^/uploads/.*"
  6. Under Set Rewrite parameters, select Path > Rewrite to, and select Dynamic.

  7. Define the action for your rewrite URL rule:

    Text after Path > Rewrite to > Dynamic:

    regex_replace(raw.http.request.uri.path, "^/uploads/", "/")

    The regex_replace() function replaces the /uploads/ part of the path with /, changing /uploads/example.jpg to /example.jpg.

  8. Select Deploy.

2. Create an origin rule

  1. Log in to the Cloudflare dashboard and select your account and domain.

  2. Go to Rules > Overview.

  3. Select Create rule > Origin Rule.

  4. Enter a descriptive name for the rule in Rule name.

  5. Under When incoming requests match, define the rule expression:

    Text in Expression Editor:

    raw.http.request.uri.path matches "^/uploads/.*"
  6. Under Set origin parameters, select Host Header > Rewrite to.

  7. Configure the rule to modify the Host header to desired hostname:

    Text after Host Header > Rewrite to:

    example.com

    This will set the Host header to example.com for matching requests. Make sure to replace example.com with your actual hostname.

  8. (Optional) To route requests to a different origin (DNS target), use DNS override:

    Text after DNS Record > Override to:

    example.com

    This will route requests to the DNS target of example.com instead of your default DNS record.

  9. Select Deploy.

Final remarks

After completing this setup, incoming traffic for https://<YOUR_SOURCE_HOSTNAME>/uploads/* will be routed to https://<YOUR_TARGET_HOSTNAME>/*.

Ensure the filters for the URL rewrite and the origin rule (or Cloud Connector rule) are precise to avoid unintended rule executions.

Remember that rules are evaluated in sequence, so Transform Rules (including URL rewrites) run before Origin Rules or Cloud Connector.