Managing URLs with redirects and rewrite paths
In this guide, you will learn how to configure redirects and rewrites in your FastStore project to manage users' access to your content.
Redirects are used to take users from one URL to another automatically. This is useful when a page has been moved, renamed, or removed. For example, if a page has been moved or renamed, the redirect ensures the user is taken to the new location.
Rewrites allow you to map custom URLs to existing page templates without changing the URL in the browser. This is useful when you want to hide complex or dynamic URL structures from users while maintaining clean and SEO-friendly URLs. For example, you can map a custom URL, such as
/sale
, to an existing Product Listing Page (PLP) template.In summary:
- Redirects change both the URL the user sees and the destination.
- Rewrites keep the URL the same but change the destination internally.
These two tools enhance content organization, help maintain a good user experience, and ensure search engines continue to index the correct content.
Creating redirects
FastStore allows you to configure redirects through the
discovery.config.js
file. This configuration is based on Next.js redirects.Projects hosted on Vercel have redirect limits, such as a maximum of 1,024 redirects in the array and a maximum string length of 4,096 forsource
anddestination
properties. (For details, see Vercel's Redirects article.) If you need to configure more than 1,024 redirects, see the (Beta) Enabling redirects using theenableRedirects
flag section for an alternative workflow.
-
Open your FastStore project in your preferred code editor and go to the
discovery.config.js
file within your project directory. -
Inside
discovery.config.js
, add theredirects
function. This function will define your redirect rules, for example:_10account: "{accountName}",_10…_10async redirects() {_10const redirects = require('./src/redirects.json');_10return redirects;_10},Theredirects
function requires theredirects.json
file, which you will create in the next step. This file contains the redirect definitions. -
Go to the
src
folder, create theredirects.json
file, and add the following:_10[_10{_10"source": "/office",_10"destination": "/about",_10"permanent": true_10}_10]Property name Description source
Original URL pattern that triggers the redirect. In this example, any URL starting with /office
will be redirected.destination
New URL to which users are sent. Here, /about
is the destination for users coming from/office
.permanent
The type of redirect. Set to true
for a permanent (308 status code) redirect, which search engines will cache. Set tofalse
for a temporary (307 status code) redirect.For more information about each property, refer to the Next.js documentation. -
Run
yarn dev
to start your project in development mode. -
Open a browser and go to the old URL (e.g.,
/office
). If the redirect is set up correctly, you should be automatically redirected to the new URL (e.g.,/about
).
(Beta) Enabling redirects using the enableRedirects
flag
For projects requiring more than 1,024 redirects, you can enable the
enableRedirects
flag in the discovery.config.js
file. This flag lets you manage redirects through the Redirects feature in the VTEX Admin.This workflow, which uses both a code configuration and the Redirects interface, is currently in beta.
-
Update your FastStore project to version
3.2.0
or higher. To do this, open your project in a code editor. -
Open a terminal and run the following command to update the FastStore packages to the latest version:_10yarn upgrade -L --scope @faststore
-
With your FastStore project open, navigate to the
discovery.config.js
file in the project directory. -
Within the
experimental
section, addenableRedirects: true
to enable the redirects feature in the project, for example: -
Run
yarn dev
to check for and address any errors before deploying this change to production. -
Create a new branch and open a pull request to deploy the changes made in the
discovery.config.js
file to production.
Once the change is live, you can manage the store's redirects in VTEX Admin by following the instructions in Managing URL redirects.
Creating rewrites
FastStore leverages Next.js rewrites to create custom routes while using existing Product Listing Page (PLP) templates. This allows you to map specific URLs to templates defined in Headless CMS, providing flexibility in content organization and URL structure.
For more information on using rewrites with a PLP template, check the Using rewrites with PLP template section in the Multiple Page Templates documentation.