# 301 Redirects for .htaccess # =========================== # Redirect a single page: Redirect 301 /pagename.php http://www.domain.com/pagename.html # Redirect an entire site: Redirect 301 / http://www.domain.com/ # Redirect an entire site to a subfolder Redirect 301 / http://www.domain.com/subfolder/ # Redirect a subfolder to another site Redirect 301 /subfolder http://www.domain.com/ # This will redirect any file with the .html extension to use the same filename but use the .php extension instead. RedirectMatch 301 (.*)\.html$ http://www.domain.com$1.php # 301 redirects using rewriting via .htaccess # =========================================== # Redirect from old domain to new domain RewriteEngine on RewriteBase / RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L] # Redirect to www location RewriteEngine on RewriteBase / rewritecond %{http_host} ^domain.com [nc] rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc] # Redirect 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] # Redirect from old domain to new domain with full path and query string: Options +FollowSymLinks RewriteEngine On RewriteRule ^(.*) http://www.newdomain.com%{REQUEST_URI} [R=302,NC] # Redirect from old domain with subdirectory to new domain w/o subdirectory but include full path and query string: Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_URI} ^/subdirname/(.*)$ RewriteRule ^(.*) http://www.katcode.com/%1 [R=302,NC] # Rewrite and redirect URLs with query parameters (files placed in root directory) # # Original URL: # http://www.example.com/index.php?id=1 # # Desired destination URL: # http://www.example.com/path-to-new-location/ # # .htaccess syntax: RewriteEngine on RewriteCond %{QUERY_STRING} id=1 RewriteRule ^index\.php$ /path-to-new-location/? [L,R=301] # Redirect URLs with query parameters (files placed in subdirectory) # # Original URL: # http://www.example.com/sub-dir/index.php?id=1 # # Desired destination URL: # http://www.example.com/path-to-new-location/ # # .htaccess syntax: RewriteEngine on RewriteCond %{QUERY_STRING} id=1 RewriteRule ^sub-dir/index\.php$ /path-to-new-location/? [L,R=301] # Redirect one clean URL to a new clean URL # # Original URL: # http://www.example.com/old-page/ # # Desired destination URL: # http://www.example.com/new-page/ # # .htaccess syntax: RewriteEngine On RewriteRule ^old-page/?$ $1/new-page$2 [R=301,L] # Rewrite and redirect URLs with query parameter to directory based structure, retaining query string in URL root level # # Original URL: # http://www.example.com/index.php?id=100 # # Desired destination URL: # http://www.example.com/100/ # # .htaccess syntax: RewriteEngine On RewriteRule ^([^/d]+)/?$ index.php?id=$1 [QSA] # Rewrite URLs with query parameter to directory based structure, retaining query string parameter in URL subdirectory # # Original URL: # http://www.example.com/index.php?category=fish # # Desired destination URL: # http://www.example.com/category/fish/ # # .htaccess syntax: RewriteEngine On RewriteRule ^/?category/([^/d]+)/?$ index.php?category=$1 [L,QSA] # Domain change – redirect all incoming request from old to new domain (retain 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 in the request to the new domain, change the last row to: RewriteRule ^(.*)$ http://www.example-new.com/ [R=301,L] # From blog.oldsite.com -> www.somewhere.com/blog/ # retains path and query, and eliminates xtra blog path if domain is blog.oldsite.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]