5 useful url rewriting examples using .htaccess
- Tuesday, March 11, 2008, 4:10
- htaccess, php, tips and technique
- 76 comments
If you are looking for the examples of URL rewriting then this post might be useful for you. In this post, I’ve given five useful examples of URL rewriting using .htacess. If you don’t know something about url rewriting then please check my older post about url rewriting using .htaccess.
Now let’s look at the examples
1)Rewriting product.php?id=12 to product-12.html
It is a simple redirection in which .php extension is hidden from the browser’s address bar and dynamic url (containing “?” character) is converted into a static URL.
RewriteEngine on
RewriteRule ^product-([0-9]+)\.html$ product.php?id=$1
2) Rewriting product.php?id=12 to product/ipod-nano/12.html
SEO expert always suggest to display the main keyword in the URL. In the following URL rewriting technique you can display the name of the product in URL.
RewriteEngine on
RewriteRule ^product/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ product.php?id=$2
3) Redirecting non www URL to www URL
If you type yahoo.com in browser it will be redirected to www.yahoo.com. If you want to do same with your website then put the following code to .htaccess file. What is benefit of this kind of redirection?? Please check the post about SEO friendly redirect (301) redirect in php and .htaccess.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^optimaxwebsolutions\.com$
RewriteRule (.*) http://www.optimaxwebsolutions.com/$1 [R=301,L]
4) Rewriting yoursite.com/user.php?username=xyz to yoursite.com/xyz
Have you checked zorpia.com.If you type http://zorpia.com/roshanbh233 in browser you can see my profile over there. If you want to do the same kind of redirection i.e http://yoursite.com/xyz to http://yoursite.com/user.php?username=xyz then you can add the following code to the .htaccess file.
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?username=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?username=$1
5) Redirecting the domain to a new subfolder of inside public_html.
Suppose the you’ve redeveloped your site and all the new development reside inside the “new” folder of inside root folder.Then the new development of the website can be accessed like “test.com/new”. Now moving these files to the root folder can be a hectic process so you can create the following code inside the .htaccess file and place it under the root folder of the website. In result, www.test.com point out to the files inside “new” folder.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^test\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.test\.com$
RewriteCond %{REQUEST_URI} !^/new/
RewriteRule (.*) /new/$1
Popularity: 93% [?]
Related Posts
» How to check and enable mod_rewrite module in apache
» How to redirect browser to https (ssl) in php
» Hide .php extension with url rewriting using .htaccess
» Custom Error Page with .htaccess
76 Comments on “5 useful url rewriting examples using .htaccess”
Trackbacks
- 5 useful url rewriting examples using .htaccess
- How to re-write URLs using .htaccess | The How To Do Things Blog
- Fünf nützliche Beispiele für URL Umleitungen unter Benutzung der .htaccess Datei
- Les Geek Links de Jean Rat … (26/03/08) | T'as le bonjour de Jean Rat !
- March’s Best Links | Vandelay Website Design
- rascunho » Blog Archive » links for 2008-03-29
- Le blog de Vincent Battaglia » En vrak - 74
- How to check and enable mod_rewrite module in apache of xampp or wamp
- Programming Tips - PHP Regular Expressions, Image Previews, Apache Mod Rewrite and MySQL Dates » PowerDosh
- 5 useful url rewriting examples using .htaccess « Captain Tsubasa Logs…
- wiki syntax « :: unseregedanken.de …
- Avatud24 - ajaveeb » SEO - tasuta reklaam Googles
- Url Rewriting using .htaccess | Online Auction Owners
- unseregedanken.de … » Apache2+PHP: mod_rewrite und SEO Optimierung






I’m thinking about optimizing my url query strings, but want to make sure there isn’t a basic problem with the structure of my site first.
I recently changed my website from www-dot-dofsbo-dot-com to searches.tittlerealestate.com. The content remains very similar. Suddenly its as if the content of my site is no longer getting crawled. Hits from keywords are limmited to phrases on my home page. The tittlerealestate domain has been around for a long time and should be getting crawled.
Could the “searches” portion of my url be causing the problem? What do you call the portion of a url preceeding the main url?
Thanks for the article
well you should have done 301 redirect to the new transferred domain then deleted the content from the old site. I think there is problem with the same content in both place i.e the massive duplicate content problem
#2 – The title says the opposite of what its actually doing.
#3 – I’m nitpicking but
^optimaxwebsolutions\.com
will also match optimaxwebsolutions.com.otherwebsite.com
#5 – Maybe I’m wrong here but I believe rewrite conditions (RewriteCond) must all be true for the RewriteRule to take place. So these two lines
RewriteCond %{HTTP_HOST} ^test\.com$
RewriteCond %{HTTP_HOST} ^www\.test\.com$
can’t both be true, so this rule will never do anything. I think you want to use the [OR] flag.
In the second example you put the value in pid, not id, that might catch newbies out.
Also, in the fourth example you don’t check for existing directories, so if someone were to go to yoursite.com/about they would get the userpage for About.
Luke, thanks for the heads up..i’ve corrected that one…and in the fourth example you should have rewrite condition if you’ve the about about up page in that manner..
Max Thanks for the comment, I think i’m valid at point #2. And the other points are you made are absolutely right and i’ve corrected them. Thank for noticing that……
Hm.. having meaningful and clean urls could be done originally with something like Django. Where instead of the page being
product.php?id=12
You could actually just have..
/products/12
or /whatever/ you want by modifying the URLS file in the app’s directory.
A much cleaner and more elegant solution.
hi jason, I agree with you elegant solution but it doesn’t show the keyword in the URL and from seo point of view it’s better to put the keyword in the URL of the post.
Does [2] mean that the following urls will all point to the same resource?
product/ipod-nano/12.html
product/foobar/12.html
product/test/12.html
product/example/12.html
ya cheruvim..it all point to the same page because according to the rewrite rule it will all call to the same page product.php?id=12
Decent examples, thanks.
However, I am a bit confused with the example vs. the caption. Such as:
1) Rewriting product.php?id=12 to product-12.html
but your rule is rewriting in the opposite way such as product-12.html to product.php?id=12
Same thing applied for #2 and #4.
The syntax for the rewrite rules is:
RewriteRule Pattern Substitution (see http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteRule)
I am missing something?
dear Boyan Kostadinov, well don’t be confused … as you know the normal way of displaying url is product.php?id=12 and since we’re rewriting product.php?id=12 to something else the caption is like so..hope this helps..
hi!!!
i have enable rewrite.my htaccess start with:
# ugly ugly hack to detect missing mod_rewrite
# RedirectMatch must be to an absolute destination, so forces 500 error…
ErrorDocument 500 “Elgg error: Apache does not have mod_rewrite loaded. Please check your apache setup.”
RedirectMatch 302 .* index.php
order allow,deny
deny from all
# Don’t listing directory
Options -Indexes
# Follow symbolic links
Options +FollowSymLinks
# Default handler
DirectoryIndex index.php
# php 4, apache 1.x
# default memory limit to 32Mb
php_value memory_limit 32M
# to make sure register global is off
php_value register_globals 0
# max post size to 8Mb
php_value post_max_size 8388608
# upload size limit to 5Mb
php_value upload_max_filesize 5242880
# hide errors, enable only if debug enabled
php_value display_errors 0
# php 4, apache 2
# default memory limit to 32Mb
php_value memory_limit 32M
# to make sure register global is off
php_value register_globals 0
# max post size to 8Mb
php_value post_max_size 8388608
# upload size limit to 5Mb
php_value upload_max_filesize 5242880
# hide errors, enable only if debug enabled
php_value display_errors 0
# php 5, apache 1 and 2
# default memory limit to 32Mb
php_value memory_limit 32M
# to make sure register global is off
php_value register_globals 0
# max post size to 8Mb
php_value post_max_size 8388608
# upload size limit to 5Mb
php_value upload_max_filesize 5242880
# hide errors, enable only if debug enabled
php_value display_errors 0
RewriteEngine on
i call a javascript from a header.php in the root inside “folder1″. i.e:
-root
htacess
main.php
header.php
–folder1
the script is:
but the javascript doesn’t work and in firebug i have an error:
syntax error
[Break on this error] <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.or…
…and i see in firebug an index page.
can you give me an help to set this rule nad teach me why?!?! i try and try but no result!
thanks in advance!!!
the javascript i call with:
script type=’text/javascript’ src=’folder1/?project=time’></script
from header.php
thanks for this, roshan! I just used it at the last minute before launching a new site today.
nice to hear that tevan…
Dude!!! I spent 3 hours total yesterday messing w/ mod_rewrite and tutorials from other sites and I could figure out #4. Now that I know, life is tons easier!!!
p.s. thats why I donated, bc of your great help
wow danny nice to hear that…..you’re the first person to donate in this blog ….
Man… I found this site today via google, and I’m bookmarkin’ it! I’m a very, very new PHP/mySQL dev, so I will be using this site tons! When I get some funds from commercial work, I will be donating. Thank you very much!
nice to hear that Kenai..
Hello.
I want to rewrite my url which has two parameter. But I am having some problem in rewriting the url.
I need to rewrite the url product.php?id=12&action=detail to product-12-detail.html.
So please can u provide me the code???
Waiting for reply..
Byee and have a nice day.
test – this does not seem to work for me.
The question is: if a user goes to: http://www.someisp.com/ they actually are getting served from http://www.someisp.com/store/ yet they only see http://www.someisp.com/
Check out the simplest way of writing URL Rewriting
http://dotnetguts.blogspot.com/2008/07/url-rewriting-with-urlrewriternet.html
How to rewrite site.com to https://site.com ???
@Arvind – you can check this post for detail about redirecting web site to https :
http://roshanbh.com.np/2008/05/redirect-browser-https-ssl-php.html
I tried that on my apache setup. Doesn’t seem to work. I just don’t understand. Here’s my htaccess file:
RewriteEngine on
RewriteRule ^old\.html$ index.html
Accessing old.html doesn’t bring me to index.html.
I had found the answer!
I need to set the overrride in the http.conf to all!
Still, thanks for the beautiful article.
I use this 5 usefull things thank you for tutorial
Thanks, that worked for me. Although there are other simpler rules for .htaccess redirection, but they don’t hide the folder name in address bar.
This one hides the folder name in the address bar.
A question, with .htaccess I can type in the URL
http://www.mysite.com/index22 and get actually http://www.mysite.com/index.php?var=22 however if I have a link in this page linking to http://www.mysite.com/index.php?var=22 and click it the browser will show http://www.mysite.com/index22 or not? Because I have already constracted the site with many links linking to actual files and I do not want to change them all. I want went the user types http://www.mysite.com/index.php?var=22 the address in the URL to become http://www.mysite.com/index22 is it possible?
hi, can anyone help me out
i was able to rewrite urls for simple stuff e.g. to products.php?id=xxx but cant for the following:
/test/ -> /test/index.php?page=xxx&op=xxx&id=xxx
op and id are optional
tried the following:
RewriteRule /(a-z+)/ /index.php?page=$1
RewriteRule /(a-z+)/(a-z+)/ /index.php?page=$1&op=$2
RewriteRule /(a-z+)/(a-z+)/(0-9+)/ /index.php?page=$1&op=$2&id=$3
when i write /test/category it doesnt redirect to test/index.php?page=category but displays error link not found…
i placed the htaccess in /test/
Please ignore my previous post I accidentaly posted my previous question I deeply apologise for doing so. What I wanted to ask is thisQ: how based on the values of a variable in t he url to display a different nice URL e.g
in http://www.mysite.com/index.php?id=110
id id>100 (which in this example is) ot show
http://www.mysite.com/albunm/100/
else if id<100
http://www.mysite.com/song/100/
Hi webmasters!!!!
I have incoming url = http://www.abc.mydomain.com
and i want to point into
destination url= http://www.mydomain.com/abc.php
and i need to this via htaccess
Please help
I am new here. I have a problem , i shall be thankfull if anybody could help me out.
I am working on a ecommerce site, which reqires that only the product name to be visible in url, without any id or any number
for instance
Url for category
http://www.domain.com/category_name/
Url for Products
http://www.domain.com/category_name/product_name/
Thanks in advance
hey thankx works fine for me ( 1st one not tried other 3 ) but is working not like other tuts i found who just boast a lot of language and the script rarely work.
One more problem.
i need to rewrite a.php?action=show&id=10 to something like a-show-10.html
this would be helpfull
Thanx again
first one is the best and its will work. its also important on SEO and google.
since Google will link HTML pages than other dynamic page.
first one is the best and its will work. its also important on SEO and google.
since Google will like HTML pages than other dynamic pages link php or jsp.
Hi Roshan
thanks for the easy steps!
I was able to use it for my current site and hop to use in future also!
thanks again!
In the url, I want to use .php extension instead of .html( ‘About-Us.html’) http://vebproject.com/cms/About-Us.html.
in .htaccess file, I have used:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]+)\.html$ index.php?menuid=$1
But If I change \.html$ to \.php$, no output is come.
Would you plz help me.
MOHIT
I have a domain http://www.timefreedomnow.net/?username that I would like to rewrite to http://www.timefreedomnow.net/profile/username. Can anyone help me with this please?
Thanks,
Sean McGilvray
nice example …… working fine …. thnx a lot
Hi,
I’ve read all your post, and have tried some of the rules and does wonders… I am new to .htaccess, and my situation requires multiple rules to be applied
this is how my url is
http://www.someurl.com/page/index.php?page=Contact_US
by following your example 5
I know has this
http://www.someurl.com/index.php?page=Contact_US
I now added example 4 with 5
but I can’t get through…
ALL HELP WOULD BE APPRECIATED
Hi,
I want to write user and SEO friendly URL. I want to redirect a user from this URL (http://www.developerconcepts.com/java/class/introduction.php) to this URL (http://www.developerconcepts.com/devc/introduction.php?tbl_top_tech_id=123&tbl_tech_id=454).
Kindly let me know how to do it?
Thank you very much in advance.
Hello, thanks for such a great article, I need a little help can you tell me how can I display ” ‘ ” in my site url. Thanks a lot.
hello
i want to solve below problem :
actual URL is :
http://www.domain.com/dir/index.php?category=XXX&subcat=YYY
must be become as below :
http://www.domain.com/dir/Advetising/Books/
thank you.
Really u r article is very easy to understand.
I have a .htaccess file in my rootfolder. ?I want to rewrite the url as follows.
change
(http://www.domain.com/Home Page.php)
to
(http://www.domain.com/home page.php).
i.e to rewrite my url to lower case.
U have given 5 useful examples. Can u please help me to do this.
I have done some code. Actually it is rewriting into lower case, but it is not redirecting.
I got the 404 error.
Thanks
Hi Roshan,
How to write rewrite this URL using .htaccess
http://xyz.com/abc.php?id=foxscan&page=1 to xyz.com/foxscan?page=1
Well Roshan, i really appreciate your work.
You have quick tutorials.
a click from me on your sponsor’s you just got it…..
i find your blog is very useful. I am very new to .htaccess. By following your tutorial also i cant made it. please help me
My current url goes like this-
http://localhost/mypage/dashboard.php?m=services&p=services.new
now i need to display it as-
http://localhost/mypage/dashboard-services-servicesnew.html
How can i do this?
Thanks in advance
Hey
This is a very good article
Impressed. All 5 examples are extremly useful and used often.
Thank much
Web Checker
Thanks for the very clear examples…regular expressions are so confusing!
I’m using #4 as follows:
RewriteRule ^([a-zA-Z0-9_-]+)$ rivers.htm?r=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/$ rivers.htm?r=$1 [NC]
Which works fine except now that when I try and link to an external URL outside the site it tries to rewrite that too. My site is http://www.WhitewaterRaftingCostaRica.com — I am hoping to make it so that if the url is in the format http://www.WhitewaterRaftingCostaRica.com/sometext then it is redirected to http://www.WhitewaterRaftingCostaRica.com/rivers.htm?r=sometext (this it does) but if the URL is any other format, then it leaves it alone.
Can anyone help?
thank you for the useful post.
Nice tutorial with these 5 steps, thanks.
I have a site set up with index.php as the main file and then all pages of the site are in a pages folder – e.g. pages/about-us.php.
So you would browse to http://www.site.com/index.php?page=about-us and it brings up the about us page.
I have tried using the following rewrite rule in .htaccess but with no luck:
RewriteEngine on
Options +FollowSymLinks
RewriteRule (.*).html ?page=$1
If I test it out by going to http://www.site.com/about-us.html, it comes up with Object not found error.
Can anyone please help?
Thanks
thanks for tips to mod rewrite, but when i rewrite url (product.php?cat=1& subcat=2 change to product/1/2/bicycle.html ) the images of the page display none, how i rewrite mode of folder or file
Have buillt this really big site and want to add htaccess the poblem is must I go to all hrefs and change index.php?a=2&x=3…etc.. to the “nice” URLs? This is pretty much work, I was wondering since with htaccess woy can put albums/12/1 and get albums.php?a=12&b=1 couldn’t this work the same way around meaning putting albums.php?a=12&b=1 and loading this page but also changing the address URL to the “nice” one?
hey, i wonder how do you do when you have this :
http://www.example.com/index.php?page=news&alpha=1
and
http://www.example.com/index.php?page=news&beta=2
??
you see ?? it both calls the news page, but sometimes it is alpha, sometimes it is beta ??
thankx a lot….
Hi,
I am new user.
I want to redirect
http://myurl.com/profile/username
to
http://myurl.com/username
I have tried this through .htaccess but CSS and connection breaks.
Is there any other way to do this.
Thanx in Advance.
i think you mean for : )Rewriting product.php?id=12 to product-12.html
Dear Roshan,
Please tell me how could i rerite url for all pages for example :www.abc.com/index.php -> http://www.abc.com/home
Wow, thanks. Very useful for me……
Was just wondering if you could help me with a basic url rewriting query that I have got here. My Problem is
1) the url in the browser does not redirect to the new url (though when i enter the new url myself , it works fine)
2) Do i need to change the links in the entire site for a particular url if i need to go for a url rewriting.