Ever wanted your page that has an ugly URL like:
/index.php?page=whatever&long=2¶meter=3
to look like /whatever/2/3?
It’s actually pretty easy and done through something called mod_rewrite.
Mod_rewrite can get pretty complicated and get into a ton of regular expressions, but for most uses, just copy and paste what I have and make any necessary changes.
Mod_rewrite goes in the .htaccess file on your server (in the main public html directory). If your server has it, edit the file, if not create one — it’s just .htaccess, nothing before the period.
Here’s the base code you’ll want to start with (but will need some modification) All of this is color coded so hopefully that helps:
RewriteEngine on
RewriteRule ^([^/]+)/?$ index.php?page=$1&%{QUERY_STRING} [L]
For example, if you want /index.php?action=anything to look like /anything what you’ll need is:
RewriteEngine on RewriteRule ^([^/]+)/?$ index.php?action=$1&%{QUERY_STRING} [L]
The above code will make /login essentially cloak /index.php?action=login, /register will load/cloak /index.php?action=register etc…
If you only want /login to go to /index.php?action=login and not have it happen for /anything you would want something like this (no wildcard):
RewriteEngine on RewriteRule ^login/?$ index.php?action=login&%{QUERY_STRING} [L]
You can also do this for multiple parameters, so to go back to that first example of making /index.php?page=whatever&num1=7&num2=6 look like /whatever/7/6 you would want to use:
RewriteEngine on RewriteRule ^([^/]+)/([0-9]+)/([0-9]+)/?$ index.php?page=$1&num1=$2&num2=$3&%{QUERY_STRING} [L]
- Here’s a bit of an explanation of what that all means…Starting at the 2nd line, the rule is it’s searching the URL (when someone visits a page on your site) for ([^/]+) which is any combination of characters/numbers *except* a forward slash. The + means it must match at least one character.
- ([0-9]+) Looks for any number
- /?$
- The / looks for a forward slash
- The ? means that forward slash is optional (if it’s there it works if it’s not it still works)
- $ means it’s at the end of the URL. So it matches for http://anything.com/anything/ and http://anything.com/anything, but not http://anything.com/anything/somethingelse.
- After the space is the URL it will load once there is a match
- $1 is a wildcard for the first contents of parenthesis, so it refers back to (^/) and what it stood for. In this case it stood for “whatever“
- $2 is a wildcard for the 2nd set of parenthesis, $3 for the third and so on.
- %{QUERY_STRING} just allows extra stuff to be put on the end so if I did /whatever/7/6/?test=test it would pass the test parameter as well.
Want to get into some more advanced mod_rewrite? Here’s a nice little cheat sheet. If you have questions, post them in the comments.
I don't really Program but I do Appreciate your Explaining in somewhat Simple terms what goes on Under the Hood in the Web2.0 World! Cheers + $$$ Everybody!!
Thanks Billy!
i agree… 100% thks
DokyTharahaksmulberry bags
Toopbroonge
DokyTharahaks mulberry sale
Toopbroonge
скачать dle шаблоны фильмы
The first in time and the first in importance of the influences upon the mind is that of nature.
hamqradvbvabbpvtsbrpskchasqmoi
buy cheap pall mall buy cheap pall mall purchase more menthol more menthol 120 cigarettes.