Whether you are just moving to Drupal or upgrading to a new version of Drupal, if you are starting with an existing website, you are facing the same problem: Your migration timeline. It will take you significant effort to move everything you have to the new system and you cannot play catch-up all the time. That's why many people are opting for continuous migration. What does that mean? Run the migration project in parallel to your existing website effort and migrate gradually, page by page and URL by URL. New functionality is done in the new system, old functionality stays until it's time to move it.
Doing continuous migration will help you to:
In this article, I'll show you the step-by-step solution to get requests to a single domain and route them to different backends based on the state of your migration.
All URLs have the same domain so your users will not see a change - this is a prerequisite for successful migration as you cannot create an old.example.com domain for SEO and search results continuity.
There are a number of ways you can tackle this requirement:
Most technical folks would naturally choose to create their own Varnish configuration but this approach forces you to do a new VCL deployment every time you change URLs and direct VCL configuration is sometimes not available to users. Let's take a look how to do something very similar but without messing with VCL configuration using a very neat service from our partner Fastly.com - essentially Varnish in the Cloud. They offer an advanced web UI for configuration and API if you want to automate all deployments.
This is how, the system will work:
Let's look at a potential implementation for this requirement. First go to âfastly.com' and sign up for a free account. Once you get one, use the set up wizard to create a new 'Service' and follow the steps below.
As a first step, we need to create a new Host as a backend for Fastly - this is our new Drupal 7 site. Click on Hosts, New and create it as following:
Once you have a new backend, we will configure request headers based on the conditions. As an example, we will want to redirect everything that starts with /user* to the new backend:
First, make sure Fastly switches between backends based on the request condition. Click on Content and create a new Header:
As a next step, click on the Backend-new and edit it's Request conditions. Add a new condition:
This condition will make sure that whenever someone visits drupal.org/user then the new backend is used.
As a last step we need to set http.host for our backends otherwise your servers will not recognize the domains used for all requests. Again, create a new Content -> Header:
Once added, set a request condition for this header to the 'User Pages' condition and create a second header 'Set host to drupal.org' with similar settings:
As you deploy this configuration, Fastly will route requests between your backends:
If you go to drupal.org/node, your request will go to the drupal.org backend, if you go to drupal.org/user, your request will go to the drupal-d7.org backend and your users will not notice anything! Job done.
If you ever did a project like this, let me know in comments or on my Twitter @jakubsuchy, I would love to see your ideas and experience. Our Professional Services team is routinely dealing with difficult migration projects so get in touch if you need help!
If this content did not answer your questions, try searching or contacting our support team for further assistance.
Fri Sep 12 2025 07:30:52 GMT+0000 (Coordinated Universal Time)