A redirect is a tool used by websites for “rerouting” or sending a visitor to an alternative webpage. An example of a redirect would be when you type “example.com” in your web-browser, but are taken to a different website, like “new-example.com.”
URL redirects are an extremely common practice employed by webmasters and content managers to ensure visitors to their website are reaching their desired content.
When you request a web-page from your browser, there is a server somewhere on the Internet that is receiving your request and responding with the appropriate content. Fundamentally, a redirect occurs when a web-server's response contains a special piece of data (an HTTP response header) instructing the browser to reroute the visitor to an alternative location.
The technical details aside, a browser works by requesting a URL and rendering the page that is returned by the website. If the website wishes the user to be redirected, the server will respond differently than if it was serving a page; it will send an extra piece of data indicating that the visitor should be redirected to a specified location.
Without going into too much of the technical details – a redirect is a behavior performed by a web-browser whenever it receives a response containing a flag (an HTTP header) to do so.
Commonly referred to as a “permanent” redirect.
Indicates to search-engines and web-browsers that the requested page has permanently relocated to a new location.
Note: permanent redirects are often cached by web-browsers like Chrome and Firefox. Therefore, it may be tricky to retroactively update a 301 redirects target location once it has been established. Any visitors who have already received the 301 redirect response for a URL will likely be served a cached response from their web-browser when visiting the same URL again.
Suggestion Only use a 301 redirect when you know that the target location will not change.
Commonly referred to as a “temporary” redirect.
Useful for general-purpose redirects within your website, where you do not want visitor’s to cache the redirect response permanently.
Suggestion Use 302 redirects for pages that have changed URL, but are subject to be updated in the future
Uncommon due to legacy browser support
Used for technical scenarios when a visitor’s HTTP request method should be persisted when they are redirected. For example, if a user submits a form, the browser normally issues a POST request to the form’s action URL. If the server responds with a 302 redirect response, the client’s web-browser would typically issue a GET request when handling the redirect. However, if the server responds with a 307 redirect response, the client’s web-browser will POST request to the redirect destination. Please note, form-data is typically lost when redirecting via POST request.
The most common use-cases that would require a redirect are:
When managing a website, it's common to end up with URLs that contain messy query string parameters. You may have links like "page.html?source=google&id=123" lingering around. Or perhaps your site architecture has changed and old parameter-based URLs need to redirect to new cleaner pages.
While query strings can serve a purpose, excessive use of parameters in URLs can create complications for navigation, SEO, and overall user experience. Luckily, there are techniques to redirect these URLs to clearer structures.
Query string parameters are additional pieces of data appended to the end of a URL, starting with a question mark (?). They allow you to pass variables and values into a webpage.
For example, you may see a URL like this:
Here, "color=blue" and "size=large" are query string parameters that pass data to the page. The page could then use this data to customize the display, pulling the color and size values.
Query strings are commonly used for search filters, personalization, tracking, and more. They enable dynamic interactions without having to create separate pages.
Redirecting URLs with query string parameters enables a few unique use cases including:
At the end of the day, the goal of redirecting URLs with query string parameters is to avoid broken links and send users to the right page with the expected results.
The most common way to redirect URLs with query string parameters on an Apache server is by using .htaccess files. .htaccess provides a simple redirect syntax:
Redirect /old-url /new-url
After the directive “Redirect” you can specify an HTTP status code. Without specifying an HTTP status code, the redirect defaults to a 302 redirect. So, to create a 301 redirect, you can use the following syntax:
Redirect 301 /old-url /new-url
For URLs with query strings, you can redirect based on parameter matches. For example:
Redirect 301 /page.html?id=about&type=old /about-us
This example redirects any “/page.html” URL with the query string parameters “id=about” and “type=old.” The URL can contain additional query string parameters as well. As long as it contains these two query string parameters, the page will be redirected to the defined redirect page “/about-us.”
When using .htaccess redirects, keep these notes in mind:
For more complex redirect scenarios, regular expressions can be used to precisely match and manipulate query string patterns with the RedirectMatch directive. For example:
RedirectMatch 301 "(.*).docx$" "$1.html"
This would redirect all Word documents with a .docx file type to HTML pages with the same name.
The key difference between RedirectMatch and Redirect is that RedirectMatch utilizes regex for pattern matching. It also supports back-references like $1 and $2 to capture groups from the regex pattern and insert them into the new redirect URL. For example:
RedirectMatch 301 "/file=(.*)" "/new-file?id=$1"
This captures the file parameter value to reuse in the redirected URL. You can use multiple capture groups and backreferences sequentially - (group1) (group2) - referred to as $1, $2.
With strategic regex, you can flexibly match legacy URL patterns and programmatically generate cleaner redirected URLs.
As we've seen, redirecting URLs with query string parameters requires carefully crafted .htaccess rules and regex expressions. For most websites, implementing these redirects properly is crucial for a smooth user experience. However, managing complex redirects can become cumbersome over time.
This is where services like SiteDetour can help. SiteDetour provides a user-friendly platform for hosting and managing redirects at scale. With SiteDetour, you can:
Rather than struggle with DIY redirect solutions, consider leveraging SiteDetour to offload the redirect hosting burden. Their reliable infrastructure and query string rule support makes redirect management simple. You can try SiteDetour for free to see how a complete redirect solution can help your website thrive.