Say for instance you are making a web hosting site want the url
http://www.mod_rewrite.dom/something...tegory=hosting to pass variables back to a php script.
The most obvious thing to do is this.
Code:
$pagenumber= $post["page"]
$category=$post["category"]
Whereby you use $post to find out the value of the page, which in this case is 12 and the category which in this case happens to be hosting. There are two things wrong with using urls like this a.they are not user friendly and b.they are not search engine friendly.
You probably want a nice easy to use url that looks more like this.
http://www.mod_rewrite.dom/something...tegory/hosting
The big problem here is getting the variable values back to the php script displaying the page. The solution is to use a php script that looks more like this
$data = explode("/",serverVar('PATH_INFO'));
$page = $data[1];
$category = $data[3];
Explanation
the serverVar path_info returns the path of the url from where something.php is being accessed so in this case it will return page/12/category/hosting. This then gets exploded or broken down into the array $data
Code:
* $data[0] = page
* $data[1] = 12
* $data[2] = category
* $data[3] = hosting
This way you have access to all the data you need for your php script.
One Small Problem
If you look closely you will spot something strange with the resultant url
http://www.mod_rewrite.dom/something...tegory/hosting
The .php extension right in the middle of the url is a problem, some search engines may recognize this as improper format and wont index your site. And if you leave it out the server wont recognize that it is a php file, that is ofcourse unless you tell the server to treat the file as a .php file even if its missing the extension. So you want the url to look like this
http://www.mod_rewrite.dom/something...tegory/hosting
To do this you need to create a .htaccess file (blank text file named .htaccess). And insert the following code
Code:
<FilesMatch "^something$">
< ForceType application/x-httpd-php >
</FilesMatch>
First the files match checks for the word 'something' in the url, then the force type directive tells Apache to recognize 'something' as a php file even though there is no extension in the url.
Comparison with mod_rewrite
Flexibility
Mod_rewrite is much more flexible than the php method, but whats fexible to some is complicated to others
SEO
I think that both are pretty much equal. The only problem with the php method is the urls sometimes become very long. Still this is more of a user friendliesness problem than a
SEO problem