It is hard to tell what your exact problem is, but the default .htaccess does more than just redirect requests to index.php. It
- Protects certain directories and files from being accessed
- Set up safe PHP defaults for those with old configurations
- Sets up some baseline cache rules
- Redirects directory/file not found to index.php
In addition, the catch-all rules that you are using is not the correct one for Drupal 7.
Unless you really know what you are doing, you should keep the .htaccess in each Drupal site's DOCROOT, and then configure your server to support multiple sites using the normal methods. You really shouldn't have to do any configuration specifically for Drupal, other than potentially needing AllowOverride All
. Personally, I use virtual hosts on all of my servers. The Apache config for each site essentially looks like:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com *.example.com
DocumentRoot /var/www/example/docroot
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com$1 [L,R=301]
</IfModule>
<Directory /var/www/example/docroot>
AllowOverride All
</Directory>
</VirtualHost>
That could run just about any site on the planet, Drupal, PHP, or otherwise.
On high volume sites, it sometimes makes sense to avoid .hatccess files (they are scanned every request), and place everything in your apache config (where it will be parsed/stored upon startup).
.htaccess
?