Basic 301 Redirects using .htaccess Rules

Redirect a single page.

Redirect 301 /pagename.php http://www.domain.com/pagename.html

Redirect an entire site or domain to a new one.

Redirect 301 / http://www.domain.com/

Redirect an entire site to a sub folder.

Redirect 301 / http://www.domain.com/subfolder/

Redirect a sub folder to different website.

Redirect 301 /subfolder http://www.domain.com/

Redirect a file extension but retain the page name.

Example: If you want an .html extension to use the same filename but use the .php extension.

RedirectMatch 301 (.*)\.html$ http://www.domain.com$1.php

Rewriting to redirect from old domain to new domain.

RewriteEngine on
RewriteBase /
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

Rewriting to redirect from a non-www to www subdomain.

RewriteEngine on
RewriteBase /
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]

Rewriting to redirect a domain to www location with subdirectory.

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/directory/index.html [R=301,NC]

Rewriting to redirect from an old domain to new domain that includes the full path and query string.

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*) http://www.newdomain.com%{REQUEST_URI} [R=302,NC]

Rewriting to redirect from an old domain with a subdirectory to new domain without the subdirectory but include the full path and query string.

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/subdirname/(.*)$
RewriteRule ^(.*) http://www.newdomain.com/%1 [R=302,NC]

Rewrite and redirect URLs with query parameters with files placed in a root directory.

Example: The original URL being http://www.website.com/index.php.id=3 and the new URL being http://www.website.com/path-to-new-location/

RewriteEngine on
RewriteCond %{QUERY_STRING} id=3
RewriteRule ^index\.php$ /path-to-new-location/. [L,R=301]

Redirect URLs with query parameters and place files in a subdirectory.

Example: The original URL being http://www.website.com/sub-dir/index.php.id=3 and the new page being http://www.website.com/path-to-new-location/

RewriteEngine on
RewriteCond %{QUERY_STRING} id=3
RewriteRule ^sub-dir/index\.php$ /path-to-new-location/. [L,R=301]

Redirect a site to HTTPS from HTTP to eliminate duplicate content.

RewriteEngine on
RewriteCond %{HTTPS} on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Redirect a site from HTTP to HTTPS to eliminate duplicate content.

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

Remove an index.html or index.php and redirect to the root.

RewriteEngine On
RewriteCond %{THE_REQUEST} /index.php HTTP [NC]
RewriteRule (.*)index.php$ /$1 [R=301,L]
RewriteEngine On
RewriteCond %{THE_REQUEST} /index.html HTTP [NC]
RewriteRule (.*)index.html$ /$1 [R=301,L]

Rewrite and redirect URLs with query parameter to directory-based structure, retaining query string in URL root level.

Example: The original URL being http://www.website.com/index.php.id=100 and new page being http://www.website.com/100/

RewriteEngine On
RewriteRule ^([^/d]+)/.$ index.php.id=$1 [QSA]

Rewrite URLs with a query parameter to a directory-based structure, retaining query string parameter in URL subdirectory.

Example: The original URL is http://www.website.com/index.php.category=fish and new page being http://www.website.com/category/fish/

RewriteEngine On
RewriteRule ^/.category/([^/d]+)/.$ index.php.category=$1 [L,QSA]

Redirect an old website to a new domain and retain the URL path.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example-old\.com$ [NC]
RewriteRule ^(.*)$ http://www.example-new.com/$1 [R=301,L]

If you do not want to pass the path to the new domain, change the last line to:
RewriteRule ^(.*)$ http://www.example-new.com/ [R=301,L]

Rewrite and add a trailing slash to URLs without one.

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://www.example.com/$1/ [R=301,L]

Redirect from a blog subdomain to a blog folder.

Example: Redirect blog.oldsite.com to www.newsite.com/blog/

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI}/ blog
RewriteRule ^(.*) http://www.somewhere.com/%{REQUEST_URI} [R=302,NC]
RewriteRule ^(.*) http://www.somewhere.com/blog/%{REQUEST_URI} [R=302,NC]

Redirect one directory to another.

Options +FollowSymLinks RewriteEngine On RewriteRule ^(.*)/old-directory/(.*)$ $1/new-directory/$2 [R,L]

That’s all for now but i’ll keep adding new rules here.

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.