John Rock John Rock - 5 months ago 26
HTML Question

Redirecting old .html page to new without html extension page?

I've just changed permalinks in my wordpress site.

And my old links were like that,

http://www.sitename.com/category/postname.html


Now new links are

http://www.sitename.com/category/postname/


I'm getting 404 error at old links, how can i redirect all .html pages to new non .html pages with .htaccess?

Answer

In the htaccess file in your document root, add these before your wordpress rules:

RedirectMatch 301  ^/([^/]+)/([^/.]+)\.html$ /$1/$2/
RedirectMatch 301  ^/([^/]+)/([^/]+)/([^/.]+)\.html$ /$1/$2/$3/

Of if you need to limit it by hosts, you can use mod_rewrite:

RewriteCond %{HTTP_HOST} sitename.com [NC]
RewriteRule ^([^/]+)/([^/.]+)\.html$ /$1/$2/ [R=301,L]

RewriteCond %{HTTP_HOST} sitename.com [NC]
RewriteRule ^([^/]+)/([^/]+)/([^/.]+)\.html$ /$1/$2/$3/ [R=301,L]
Comments