How to Create SEO Friendly URL’s Using Mod Rewrite and PHP
Let’s look at a example of a URL which does not attract much Search Engine Love.
http://www.yoursite.com/product.php?productid=2&categoryid=3. It is hard even for a human to tell what the product is by looking at this URL. With the trick we will use the final URL can look something like this http://www.yoursite.com/product/13/3/2-GB-MP3-player.html.
Now if someone looks at this link they can easily know that the product is a 2 GB MP3 player. Now if you want hire a professional SEO to do the changes it may cost you quite a lot, with a little bit of PHP knowledge and using some simple URL rewriting using Apache Mod Rewrite you can achieve this for free.
I term this simple SEO rule as What to look for and Where to go. We’ll learn more about these terms as we get ahead with the tutorial.
Steps to Rewrite your URLs
Ok now that we have seen what Mod Rewrite actually does we will start on learning how to actually rewrite you URL.The first step you will need to undertake is create a .htaccess file and place it in the root directory of your website. Once you have created the file using a text editor edit it and add the following lines;
RewriteEngine on RewriteRule ^article/([0-9]+)/([0-9]+)/(.*?).html$ /article.php?articleid=$1&categoryid=$2
Lets take a look at the two lines individually.
This line tells the web server that we will be rewriting the URL’s otherwise it may start throwing 404 errors, this line is very important before you can start creating the rewrite rules. Now lets look at the second line which is the most crucial one in actually redirecting your URLs.
With this particular line we are creating a rule telling the web server that when it encounters a URL that matches the rule it should do what we have defined. Lets decipher the rule part by part. We are using a few Regex patterns which can be easily learnt through regex online tutorials.
RewriteRule ^article/([0-9]+)/([0-9]+)/(.*?).html$ /article.php?articleid=$1&categoryid=$2
In the above line RewriteRule (a rule to rewrite the URL for the web server Apache) tells the web server that this a rule that it should follow for URL rewriting. Further the rule is divided into two parts for simplicity lets call the first part “what to look for” and the second part “where to go”. So in the above line we are telling the web server what to look for and if it finds it where it should go.
The text forms the pattern of what to look for “^article/([0-9]+)/([0-9]+)/(.*?).html$”. The what to look for pattern should always end with a dollar($) sign. Lets compare the pattern with the URL we are aiming to create which is http://www.yoursite.com/product/13/3/2-GB-MP3-player.html. Lets divide the pattern into different parts and compare it with our URL.
- The first character of the pattern the exponential sign “^” signifies the start of an URL in this casehttp://www.yoursite.com.
- The next part article/ relates to the first directory in the URL which ends with a slash “/”.
- Now the next section you will see something like this ([0-9]+) which a regular expression telling the web server that it can encounter any number between 0 and 9 after article/, the + sign signifies that the number can occur 1 or more times. For example your article id may be either 1, 20, 567, 2005 etc.
- After that comes another ([0-9]+) which signifies the category id again your category id may be a single number or anything else.
- After that we are using (.*?).html which is a wildcard saying after the last / we may have anything with any number of characters or numbers ending with a .html extension.
- The $ lines tells the web server that this is the end of the pattern.
In the example we used ([0-9]+) but say your category id cannot be more than 100 then instead of using the + symbol you can tell the web server that there will be only a double digit number using [0-9][0-9]. In that case the rule would be changed as such
RewriteRule ^article/([0-9]+)/([0-9][0-9])/(.*?).html$ /article.php?articleid=$1&categoryid=$2
In the above example we looked at some not so simple regular expressions that can let the web server know that we are following a certain pattern for a URL that needs to be redirected. Though the above example looks tough, it’s not tough at all, once you get to know how to use the regular expressions.
Rewriting URL’s require you to use regular expressions and without knowing this you will have to pay the SEO guys a huge amount.