Suppose you a domain, http://domain.com. Here’s an example of the structure you might be using:

domain.com/ (the root of your web hosting)
-->yourlaravel4_base/
-->[some other folders...]
-->public_html/ (where your html files and such go)
-->[some other folders...]
-->yourlaravel4/

/public_html/ is the root of the publicly accesible part of your web hosting files. You wanna make a subfolder in /public_html/ (in this case /public_html/yourlaravel4/). In this subfolder you will store all the contents of the Laravel 4 “public/” folder.

Now, for the rest of the files. You have to go to the root of your web hosting files, that is, you wanna be at domain.com/ level, therefore being able to see public_html/ and some other folders. Then, we need to create a folder here, where Laravel 4’s base files will be stored. In this case, it’s domain.com/yourlaravel4_base/. Inside yourlaravel4_base/ we need to store every file and folder that exists in the base Laravel 4 directory. That would be app/, bootstrap/, vendor/, server.php, etc etc. Everything EXCEPT the /public/ folder, whose contents you already stored in public_html/yourlaravel4/.

Finally, we need to edit 2 files: Laravel’s /bootstrap/paths.php and /public/index.php.

In the paths.php file, replace:
'app' => __DIR__.'/../app',
with:
'app' => __DIR__.'/../../yourlaravel4_base/app',

In the paths.php file, replace:
'public' => __DIR__.'/../public',
with:
'public' => __DIR__,

In the paths.php file, replace:
'base' => __DIR__.'/..',
with:
'base' => __DIR__.'/../../yourlaravel4_base',

In paths.php, replace:
'storage' => __DIR__.'/../app/storage',
with:
'storage' => __DIR__.'/../../yourlaravel4_base/app/storage',

In index.php, replace:
require __DIR__.'/../bootstrap/autoload.php';
with:
require __DIR__.'/../../yourlaravel4_base/bootstrap/autoload.php';

In index.php, replace:
$app = require_once __DIR__.'/../bootstrap/start.php';
with:
$app = require_once __DIR__.'/../../yourlaravel4_base/bootstrap/start.php';