tutorial
The Apache module mod_rewrite
allows you to rewrite URL requests that come into your server and is based on a regular-expression parser. The examples presented here show how to:
Direct requests for one subdirectory to a different subdirectory or the primary directory (document root)
Example: http://example.com/folder1/ becomes http://example.com/folder2/ or just http://example.com/.
Direct requests to a subdirectory
Example: http://example.com/file.html becomes http://example.com/folder1/file.html.
Add www to every request
Example: http://example.com becomes http://www.example.com. Or, convert http:// to https://.
Convert URL to all lowercase using Rewrite Map
Example: YourDomaIn.com/recIpeS.html becomes yourdomain.com/recipes
This will help prevent typos from producing http errors.
mod_rewrite
When implemented correctly, mod_rewrite
is very powerful. There are many other applications for mod_rewrite
that you can learn about at apache.org. Please reference their website for other possible rewrite scenarios.
These examples are provided as a courtesy – (mt) Media Temple does not design custom rewrite rules for individual customer websites.
READ ME FIRST
Advanced Support can help!
If you’re having trouble with the steps in this article, additional assistance is available via our free Support, our dedicated team of infosec specialists. For more information on what we can do for you, please click here.
Requirements
Before you start, please have handy:
That’s it! Once you’ve uploaded the file, the rewrite rule should take effect immediately.
Some Content Management Systems (CMSs), like WordPress for example, overwrite .htaccess files with their own settings. In that case, you may need to figure out a way to do your rewrite from within the CMS.
http://example.com/folder1/ becomes http://example.com/folder2/ or just http://example.com/.
domains/example.com/html/folder2/ must exist and have content in it for this to work..htaccess
This .htaccess file will redirect http://example.com/folder1/ to http://example.com/folder2/. Choose this version if you don’t have the same file structure in both directories:
Filename: .htaccess
Options +FollowSymLinks RewriteEngine On RewriteRule ^folder1.*$ http://example.com/folder2/ [R=301,L]
Filename: .htaccess.
Options +FollowSymLinks RewriteEngine On RewriteRule ^folder1.*$ http://example.com/ [R=301,L]
File name: .htaccess
Options +FollowSymLinks RewriteEngine On RewriteRule ^folder1/(.*)$ http://gs.mt-example.com/folder2/$1 [R=301,L]
Test
Upload this file to folder2 (if you followed the first or third example) or your html folder (if you followed the second example) with FTP:
Filename: index.html
<html> <body> Mod_rewrite is working! </body> </html>
Then, if you followed the first or second example, visit http://example.com/folder1/ in your browser. You should see the URL change to http://example.com/folder2/ or http://example.com/ and the test page content.
If you followed the third example, visit http://example.com/folder1/index.html. You should be redirected to http://example.com/folder2/index.html and see the test page content.
Code explanation
http://example.com/file.html becomes http://example.com/folder1/file.html.
Note: The directory folder1 must be unique in the URL. It won’t work for http://example.com/folder1/folder1.html. The directory folder1 must exist and have content in it.
Filename: .htaccess
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} example.com$ [NC] RewriteCond %{HTTP_HOST} !folder1 RewriteRule ^(.*)$ http://example.com/folder1/$1 [R=301,L]
Test
Upload this file to folder1 with FTP:
Filename: index.html
<html> <body> Mod_rewrite is working! </body> </html>
Then, visit http://example.com/ in your browser. You should see the URL change to http://example.com/folder1/ and the test page content.Code explanation
http://example.com becomes http://www.example.com. Or, http://example.com becomes https://example.com..htaccess
Filename:.htaccess
Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^example.com [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
Filename: .htaccess
RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
Test
Visit http://example.com in your browser. You should see that the same page is displayed, but the URL has changed to http://www.example.com (first example) or https://example.com (second example).
Also, http://example.com/file.html will become http://www.example.com/file.html or https://example.com/file.html.Code explanation
This .htaccess rule will make sure that all characters entered into a url are converted to lowercase. This helps prevents errors caused by typos.
www.examPLe.com/recIPes becomes www.example.com/recipes
Note: Because this rule requires an edit to a server level configuration file, Grid and Managed WordPress users will not be able to implement this rule.
In order for this to work properly, you must also add a directive to your vhost file (httpd.conf):
<IfModule mod_rewrite.c> RewriteMap lc int:tolower </IfModule>
Next, open your .htaccess and add the following lines:
RewriteEngine On RewriteCond %{REQUEST_URI} [A-Z] RewriteRule . ${lc:%{REQUEST_URI}} [R=301,L]
Note: Instead of using RewriteMap to convert URLs to lowercase, it is recommended by Apache that mod_spelling be used to ignore case sensitivities.
Test
Navigate to your domain using a combination of uppercase and lowercase letters.
Code Explanation
Regular expressions
Rewrite rules often contain symbols that make a regular expression (regex). This is how the server knows exactly how you want your URL changed. However, regular expressions can be tricky to decipher at first glance. Here’s some common elements you will see in your rewrite rules, along with some specific examples.
See more regular expressions at perl.org.
Examine the new URL in your browser closely. Does it match a file that exists on the server in the new location specified by the rewrite rule? You may have to make your rewrite rule more broad (you may be able to remove the $1 from the second string). This will direct rewrites to the main index page given in the second string. Or, you may need to copy files from your old location to the new location.
If the URL is just plain wrong (like http://example.com/folder1//file.html – note the two /s) you will need to re-examine your syntax. (mt) Media Temple does not support syntax troubleshooting.
If you notice that your URL is ridiculously long, that your page never loads, or that your browser gives you an error message about redirecting, you likely have conflicting redirects in place.
You should check your entire .htaccess file for rewrite rules that might match other rewrite rules. You may also need to check .htaccess files in subdirectories. Note that FTP will not show .htaccess files unless you have enabled the option to view hidden files and folders. See our .htaccess article for details.
Also, it’s possible to include redirects inside HTML and PHP pages. Check the page you were testing for its own redirects.
Adding [L] after a rewrite rule can help in some cases, because that tells the server to stop trying to rewrite a URL after it has applied that rule.
This post was last modified on 31 December 2021 5:22 PM
British high street chain WH Smith has recently revealed that it was hit by a…
As banks worldwide roll out Voice ID as a means of user authentication over the…
In the era of digital transformation, cybersecurity has become a major concern for businesses. When…
In today's digital age, cybersecurity threats have become a significant concern for businesses of all…
The RIG Exploit Kit is currently in the midst of its most productive phase, attempting…
One of the most transformational technologies of our time, artificial intelligence (AI), has quickly come…
Leave a Comment