There are standard htaccess 301 redirect rules that I search for each time I build a website, redirect a page for an SEO strategy for a client, or help with a website’s SEO transition plan. So I thought I would create a resource to gather all the standard rules into one spot to save me time for each project. The .htaccess, or Hypertext Access file, is a configuration text file that controls the directory and any subdirectories located on an Apache webserver. If you use a Linux-based web hosting plan, your web properties likely run on Apache. You may have seen the .htaccess file in specific directories, mainly if you have create a WordPress website design, or Shopify e-commerce website, or Craft website, or any other content management web software. The .htaccess file can include specific instructions for the server. This file can configure the server to require a password for the directory where it resides. The .htaccess file can also be configured to automatically redirect users to another index file or site, restrict or allow users based on IP addresses, and disable directory listings. You may never need to edit the .htaccess file, but if you do, you must make sure that the file is named ‘.htaccess’ only, with the period in front and no .txt or .htm file extension. Redirect 301 /pagename.php http://www.domain.com/pagename.html Redirect 301 / http://www.domain.com/ Redirect 301 / http://www.domain.com/subfolder/ Redirect 301 /subfolder http://www.domain.com/ Example: If you want a .html extension to use the same filename but use the .php extension. RedirectMatch 301 (.*)\.html$ http://www.domain.com$1.php RewriteEngine on RewriteEngine on RewriteEngine on Options +FollowSymLinks Options +FollowSymLinks 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 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 RewriteEngine on RewriteEngine On RewriteEngine On RewriteEngine On Example: The original URL being http://www.website.com/index.php?id=100 and the new page being http://www.website.com/100/ RewriteEngine On Example: The original URL is http://www.website.com/index.php?category=fish and the new page being http://www.website.com/category/fish/ RewriteEngine On RewriteEngine on If you do not want to pass the path to the new domain, change the last line to: RewriteCond %{REQUEST_FILENAME} !-f Example: Redirect blog.oldsite.com to www.newsite.com/blog/ Options +FollowSymLinks Options +FollowSymLinks RewriteEngine On RewriteRule ^(.*)/old-directory/(.*)$ $1/new-directory/$2 [R,L] Common htaccess 301 Redirect Rules for SEO

What is an Htaccess file?
Common 301 Redirect Htaccess Rules
Redirect a single page
Redirect an entire site or domain to a new one
Redirect an entire site to a subfolder
Redirect a subfolder to a different website
Redirect a file extension but retain the page name
Redirect from an old domain to a new domain
RewriteBase /
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]Redirect from a non-www to a www subdomain
RewriteBase /
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]Redirect a domain to a www location with a subdirectory
RewriteBase /
RewriteCond %{HTTP_HOST} domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/directory/index.html [R=301,NC]Redirect from an old domain to a new domain that includes the full path and query string
RewriteEngine On
RewriteRule ^(.*) http://www.newdomain.com%{REQUEST_URI} [R=302,NC]Redirect from an old domain with a subdirectory to a new domain without the subdirectory but include the full path and query string
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/subdirname/(.*)$
RewriteRule ^(.*) http://www.katcode.com/%1 [R=302,NC]Redirect URLs with query parameters with files placed in a root directory
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
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
RewriteCond %{HTTPS} on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}Redirect a site from HTTP to HTTPS to eliminate duplicate content
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}Remove an index.html or index.php and redirect to the root
RewriteCond %{THE_REQUEST} /index.php HTTP [NC]
RewriteRule (.*)index.php$ /$1 [R=301,L]
RewriteCond %{THE_REQUEST} /index.html HTTP [NC]
RewriteRule (.*)index.html$ /$1 [R=301,L]Redirect URLs with query parameters to a directory-based structure while retaining the query string in the URL root level
RewriteRule ^([^/d]+)/?$ index.php?id=$1 [QSA]Rewrite URLs with a query parameter to a directory-based structure while retaining query string parameters in the URL subdirectory
RewriteRule ^/?category/([^/d]+)/?$ index.php?category=$1 [L,QSA]Redirect an old website to a new domain and retain the URL path
RewriteCond %{HTTP_HOST} ^example-old\.com$ [NC]
RewriteRule ^(.*)$ http://www.example-new.com/$1 [R=301,L]
RewriteRule ^(.*)$ http://www.example-new.com/ [R=301,L]Add a trailing slash to URLs without one
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.example.com/$1/ [R=301,L]
Redirect from a blog subdomain to a blog folder
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