Skip to content

Instantly share code, notes, and snippets.

@craighooghiem
Forked from ScottPhillips/.htaccess
Last active March 20, 2016 12:09
Show Gist options
  • Save craighooghiem/b9ef1836bd9fe22fb0d3 to your computer and use it in GitHub Desktop.
Save craighooghiem/b9ef1836bd9fe22fb0d3 to your computer and use it in GitHub Desktop.
Common .htaccess Redirects

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 sub folder Redirect 301 / http://www.domain.com/subfolder/

###Redirect a sub folder 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

###You can also perform 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 including 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]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment