I'm using XAMPP + bonfire v0.7, I've installed it under a subdirectory called "ci-bonfire", this is my solution.
To remove index.php in URL
Step 1: Goto ci-bonfire/application/config/config.php, remove "index.php" from index-page config.
$config['index_page'] = "";
Step 2: Change 1.htaccess in ci-bonfire/public/ to .htaccess
update line #158, change to your subdirectory name
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteBase /ci-bonfire
RewriteCond %{REQUEST_URI} ^bonfire/codeigniter.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
</IfModule>
and further down to line #182, prepend "public" to "index.php"
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ public/index.php/$1 [L]
</IfModule>
To remove public/index.php in URL
Step 1: Goto ci-bonfire/application/config/config.php, remove "index.php" from index-page config.
$config['index_page'] = "";
Step 2: Rename (for backup purpose) or remove index.php and .htaccess in your subdirectory, ci-bonfire
Step 3: Then refer to "Reverting To Traditional Structure" in this cibonfire's documentation. Move all files from public folder up 1 level to your subdirectory.
Step 4: Update index.php as the following
$path = ".";
Hope it helps, it works for me :)