View Single Post
Old October 11th, 2004   #1 (permalink)
KingPin
Da Boss!
Starship Legend Champion
 
KingPin's Avatar
 
Join Date: Apr 2004
Location: Brooklyn, NY
Posts: 7,539
Thanks: 53
Thanked 72 Times in 50 Posts
Blog Entries: 24
My Mood: Lurking
KingPin KingPin o.OKingPin KingPin o.OKingPin KingPin o.O
KingPin KingPin o.OKingPin KingPin o.OKingPin KingPin o.OKingPin KingPin o.OKingPin KingPin o.OKingPin KingPin o.OKingPin KingPin o.OKingPin KingPin o.OKingPin KingPin o.OKingPin KingPin o.OKingPin KingPin o.O
PHP : alternative to mod_rewrite for SE friendly URLs

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

Heaven doesn't want me, and hell is afraid I'll take over.NO SUPPORT VIA PM.

KingPin is offline   Reply With Quote