-
-
Save frederickjh/6f95b0199bdad1d5ab9fcd28f6213416 to your computer and use it in GitHub Desktop.
Common .htaccess Redirects
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
How to force HTTPS using the .htaccess file | |
To force all web traffic to use HTTPS insert the following lines of code in the .htaccess file in your website’s root folder. | |
Important:If you have existing code in your .htaccess, add this above where there are already rules with a similar starting | |
prefix. | |
# Redirect to SSL version of a site without needing to set the domain name, | |
RewriteCond %{HTTPS} off | |
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] | |
# Redirect to SSL version of site. Be sure to set your actual domain name. | |
RewriteEngine On | |
RewriteCond %{SERVER_PORT} 80 | |
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] | |
Be sure to replace www.example.com with your actual domain name. | |
To force a specific domain to use HTTPS, use the following lines of code in the .htaccess file in your website's root folder: | |
RewriteEngine On | |
RewriteCond %{HTTP_HOST} ^example\.com [NC] | |
RewriteCond %{SERVER_PORT} 80 | |
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] | |
Make sure to replace example\.com with the domain name you're trying force to https. Additionally, you need to replace | |
www.example.com with your actual domain name. | |
If you want to force SSL on a specific folder you can insert the code below into a .htaccess file placed in that specific | |
folder: | |
RewriteEngine On | |
RewriteCond %{SERVER_PORT} 80 | |
RewriteCond %{REQUEST_URI} folder | |
RewriteRule ^(.*)$ https://www.example.com/folder/$1 [R,L] | |
Make sure you change the folder reference to the actual folder name. Then be sure to replace www.example.com/folder with your | |
actual domain name and folder you want to force the SSL on. | |
#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