How to Set Up 301 Redirects in Joomla 6 (Complete Guide)
Quick Answer
To create a 301 redirect in Joomla, go to System β Manage β Plugins, enable System - Redirect, then open Components β Redirects β New and enter your old and new URL. For large site migrations, use the Redirect Manager's Import feature to add many URLs at once, or edit .htaccess directly for server-level redirects that run before Joomla loads.
This guide covers every practical way to redirect URLs on a Joomla site: Joomla's built-in Redirect component, bulk redirects for migrations, and server-level .htaccess rules. Steps and screenshots below reflect the Joomla 6 admin layout; the menu labels are effectively unchanged going back to Joomla 4.
| What you'll need | Notes |
|---|---|
| Joomla admin (Super User) access | Required for all steps below |
| Joomla 4, 5, or 6 | The Redirect component and plugin ship with Joomla core since version 1.6 |
| FTP or hosting File Manager access | Only needed if you also want .htaccess-level redirects |
Apache with mod_rewrite | Only needed for the .htaccess method β Nginx users edit their server block instead |
| A list of old URLs mapped to new URLs | A simple spreadsheet works well for migrations with many pages |
Step 1: Know When You Actually Need a Redirect
You need a redirect any time a URL that used to exist stops existing at that address: renaming a menu item alias, moving an article to a different category, merging or deleting categories, switching domains, or moving from HTTP to HTTPS. A 301 redirect tells browsers and search engines the move is permanent β bookmarks get updated and most of the page's ranking signals carry over to the new URL. A 302 redirect signals a temporary move; search engines keep indexing the original URL, which is only appropriate for short-lived situations like a maintenance placeholder.
Step 2: Enable the System - Redirect Plugin
A fresh Joomla install ships with the Redirect plugin disabled. Until it's on, nothing you save in the Redirect component will fire.
- Go to System β Manage β Plugins.
- Search for
redirect. - Open System - Redirect, set Status to Enabled, and click Save & Close.
π‘ Tip
If your redirects still don't work after saving them in Components β Redirects, this plugin being disabled is the most common cause.
Step 3: Create a Single Redirect
- Go to Components β Redirects.
- Click New.
- In Source URL, enter the old path as a relative URL (e.g.
/old-page) β do not include the domain. - In Destination URL, enter the new path or full URL.
- Optionally add a Comment so future editors know why the redirect exists.
- Set Status to Enabled and click Save & Close.
Visit the old URL in a browser and it will now forward to the new one with a 301 status by default.
Step 4: Turn On Custom Status Codes (If You Need 302s)
By default, the Redirect component sends every redirect as a 301, no matter what you pick per row. To use other codes:
- In Components β Redirects, click Options in the toolbar.
- Set Use Custom Redirect Status Codes to Yes and save.
- Now the HTTP Status Code dropdown on each redirect row actually takes effect β pick 301, 302, or another code as needed.
β οΈ Watch out
Turn this option on before importing a CSV that mixes 301 and 302 codes β otherwise every imported row is silently flattened to 301.
Step 5: Bulk-Import Redirects for a Migration
If you're restructuring a large site or migrating from another CMS, creating redirects one by one isn't practical. The Redirect Manager's toolbar includes an Import option that reads a delimited list of old/new URL pairs and creates the matching rows in bulk β useful after a redesign, a URL structure change, or a platform migration where you already have an old-URL-to-new-URL mapping in a spreadsheet.
Step 6: Add Server-Level Redirects via .htaccess (Alternative Method)
On Apache hosting, you can also redirect at the server level, before Joomla even loads β slightly faster, and useful for rules that don't map cleanly to single URLs (like redirecting an entire old subfolder). Back up .htaccess first, then add lines such as:
RewriteEngine On
RewriteRule ^old-page$ /new-page [R=301,L]
Place custom rules like this above Joomla's own SEF rewrite block near the top of the file. Nginx doesn't use .htaccess; the equivalent rule goes in a rewrite or return 301 directive inside your server block.
β οΈ Watch out
Don't run both the Redirect component and an .htaccess rule for the same URL β the two can conflict, and which one "wins" depends on server config and rule order. Pick one method per URL.
Step 7: Test and Verify the Redirect
Reaching the right page in a browser doesn't confirm the status code β browsers don't display that. Check it directly:
- Run
curl -I https://yoursite.com/old-pagein a terminal and look forHTTP/1.1 301 Moved Permanentlyand aLocationheader pointing to the new URL. - Or open browser DevTools β Network tab, reload the old URL, and check the status code of the first request.
β Frequently Asked Questions
What is a 301 redirect in Joomla?
It's a permanent-move response Joomla sends when a visitor or crawler requests an old URL, automatically forwarding them to a new one. It's built into Joomla core via the Redirect component and the System - Redirect plugin β no extension required for basic use.
What's the difference between a 301 and a 302 redirect?
301 means the move is permanent: search engines transfer most ranking signals to the new URL and update their index. 302 means temporary: the old URL stays indexed and should come back. Use 301 for anything you don't plan to revert.
Does Joomla have a built-in redirect tool?
Yes β the Redirect component (Components β Redirects) plus the System - Redirect plugin, both included in Joomla core since version 1.6. You only need a third-party extension if you want extra features like pattern-based rules.
Do 301 redirects hurt my Joomla site's SEO?
Not when used correctly. A single, direct 301 to the most relevant new page preserves most of the original ranking value. What does hurt SEO is redirect chains, blanket redirects to the homepage, or using 302 for a permanent change.
Should I use the Redirect component or .htaccess for a big migration?
The component is easier for content editors and supports bulk import without touching server files. .htaccess is slightly faster and better for pattern-based rules affecting whole folders. Either works β just don't use both for the same URL.
How long should I keep old redirects active?
Indefinitely, for any URL that was ever indexed or linked to externally. Deleting a redirect row later just turns it back into a 404 for anyone still holding the old link or bookmark.
π§― Common Mistakes to Avoid
- Forgetting to enable the System - Redirect plugin. Rows saved in the component do nothing until the plugin is active.
- Creating redirect chains. A β B β C adds latency and wastes crawl budget β always point straight to the final destination.
- Using 302 for a permanent change. This tells search engines to keep the old URL indexed, which defeats the purpose.
- Redirecting everything to the homepage. Map each old URL to the closest matching new page instead β it's better for both users and rankings.
- Running the Redirect component and .htaccess for the same URL. Conflicting rules produce unpredictable behavior depending on server config.
- Skipping verification. Landing on the right page visually doesn't confirm a 301 β check the actual HTTP header with
curl -Ior DevTools.
β‘οΈ What's Next
If you're cleaning up redirects as part of a broader SEO pass, a logical next step is reviewing your site's 404 log (Joomla's Redirect Manager can collect these automatically) and auditing your robots.txt and sitemap so search engines don't keep crawling URLs you've already redirected away from.