I want to redirect all my non SEF url's to new SEF url on my site.But my old site and new site articles have different id's. How can i apply a 301 redirection for old non sef url's to new sef url

4 Answers 4


From old non-sef urls to new SEF with new article IDs, sounds a little bit troublesome. Too many changes to track down all at once.

It would be best if you had maintained the old article IDs, or at least made this transition in steps, like first enable SEF urls for your old pages, give it some time, for search engines to update their indexes and then proceed with the next steps, so you would only have to redirect sef urls (if needed).

Now, how to deal with it depends...

  • How many articles?
  • Are the new articles have higher ids than the old ones, or there is a mix of replacements on ids?

There is the core redirect component/plugin, there are extensions like SH404SEF that could help, there is the .htaccess you can use for redirections wherever they could apply.

The thing is that if you have tons of articles, then it would be too much work to create redirections for all. Also, if there are conflicting ids for the articles, and you redirect an old non-sef url with a certain id, to the new SEF url of another article - how do you plan to deal with the possibility that one of your new articles has the same id as the one you redirected?

Another possibility is to simply let things as they are now, create your 404 pages to inform everyone that pages have been moved, push in Google your new sitemap and soon your new urls will be indexed.


You can redirect links in your .htaccess file. Below the line that starts:

Begin - Custom redirects

You can start to add your redirects. They look like:

Redirect 301 /oldurl http://www.example.com/newurl


Please edit .htaccess in you joomla root directory:

sample in .htaccess

RewriteEngine On
RewriteCond %{HTTP_HOST} ^site.com
RewriteRule (.*) http://www.site.com/$1 [R=301,L]

or if you use params - redirect with params:

site.com/blog?limitstart=0 to site.com/blog

RewriteCond %{QUERY_STRING} ^limitstart=0
RewriteRule ^blog http://site.com/blog? [R=301,L]

Thanks for all the quick responses. I fixed it with this in my .htaccess file:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=46&Itemid=78$ [NC]
RewriteRule ^(index\.php)?$ /home/history? [L,R=301,NC]

Anyone may help these.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.