I am not so good with mod_rewrite however i actually need it now.

I've the entire new website within an folder known as site. So if you want to go the brand new website the URL would seem like http://domain.com/site/.... Now I have to exclude the site in the URL but nonetheless point it to /site/ Aside from one folder known as upload. How do i do that?

So http://domain.com/anything.ext and http://domain.com/anyfolder would indicate http://domain.com/site/... aside from domain.com/upload which still indicates domain.com/upload.

Then another question, is assume this really is only great for a brief solution or does not it truly matter (considering speed and efficiency)?

(Presuming you're putting the guidelines inside a .htaccess file inside your document root) make use of this:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^upload
RewriteRule (.*) site/$1 [L]

If you're putting it into httpd.conf, you have to change it out slightly:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/upload
RewriteRule (.*) /site$1 [L]

Concerning the second question, Personally, i can't stand mod_rewrite and definitely wouldn't utilize it like a permanent solution unless of course you will need to. The reason being mod_rewrite is very inefficient, especially on busy servers, since it needs to run a minumum of one regular expression on each and every incoming request. It is best to make use of the [L] flag to make sure that forget about rules than necessary are processed.

It is usually more effective to structure your sites in the same manner because the application describes them. The above mentioned should enable you to get working, but do not let it rest in position for too lengthy.

I am sure you realize this already, but here may be the mod_rewrite documentation.