Simple PHP URL rewrite
June 29th, 2007
One thing I did for dmb is making dodosmb.com/profile/username work with my profile.php script. Normally without the help of .htaccess, you can use the value of the path info from the global variable
$_SERVER['PATH_INFO']
For example, create a php file named profile.php and in there put:
<?php echo $_SERVER['PATH_INFO']; ?>
Then upload the file and load it with yourServerPath/profile.php/dodo. The script will print out
/dodo
In my profile.php, I get the user by doing a simple sub string command like:
$user = substr($_SERVER['PATH_INFO'], 1); // this will get rid of the leading slash
This allows me to feed users to my profile.php by using the url dodosmb.com/profile.php/username
That’s still not pretty enough; it’s better if I can do dodosmb.com/profile/username. This is where .htaccess rewrite comes in. Here’s a great tutorial for .htaccess rewrite rules. To accomplish my goal, I used the following rewrite rules in my .htaccess:
RewriteEngine on
RewriteRule ^profile/([A-Za-z0-9]+)/$ /profile.php/$1
RewriteRule ^profile/([A-Za-z0-9]+)$ /profile.php/$1
Thoughts Aside
Some hosting service providers offer their services to the potential customers by having accessibility to the powerful server hosting. E-commerce hosting tools are very beneficial for the promotion of internet marketing in the most manipulated manner. The web host is accountable of fulfilling all the necessary requirements of the webmaster in accordance with the policies of the transaction. The powerful and latest servers are very helpful in restoring all kinds of backup files authentically. There is a need of modem for dial up connection which is really very easiest and cheapest way of internet accessibility.
3 Comments Leave a Comment
July 1st, 2007 at 2:16 pmI’m about to develop a php based website and I found your thread.
Thank god that’s exactly what I’m looking for! 
Some comments/suggestions on your URL rewrite code. You have duplicates in the list for with and without a slash.
RewriteEngine on
RewriteRule ^profile/([A-Za-z0-9]+)/$ /profile.php/$1
RewriteRule ^profile/([A-Za-z0-9]+)$ /profile.php/$1
It is easier if you simply make the slash optional using a regex question mark following the slash. This eliminates the need for two rules to do the same thing.
RewriteEngine on
RewriteRule ^profile/([A-Za-z0-9]+)/?$ /profile.php/$1
Also, it may be necessary to enable the FollowSymLinks option to get the server to actually do the rewrite. You would add the following to the top of the .htaccess to be sure it was enabled.
Options +FollowSymLinksSo, if you followed both suggestions, your new .htaccess would look like this.
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^profile/([A-Za-z0-9]+)/?$ /profile.php/$1


Nice tip.
Thanks!