Muchas veces queremos tener nuestra cuenta de hosting ordenada y podemos querer la página principal en un subdirectorio en lugar de tenerla en el directorio raíz (donde también puede que tengas las carpetas de otras páginas). Además, no queremos acceder mediante http://www.sitio.com/drupal/; querremos acceder como si fuese realmente el directorio raíz http://www.sitio.com/.
Aquí va la solución. Con estas modificaciones en nuestro archivo .htaccess del directorio raíz estará casi todo hecho.
Options -Indexes RewriteEngine on Options +FollowSymLinks RewriteCond %{HTTP_HOST} !^www\.sitio\.com$ [NC] RewriteRule .* http://www.sitio.com/ [L,R=301] RewriteRule ^$ drupal/index.php [L] RewriteCond %{DOCUMENT_ROOT}/drupal%{REQUEST_URI} -f RewriteRule .* drupal/$0 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* drupal/index.php?q=$0 [QSA]
Después, en el .htacess que está dentro del directorio drupal, es decir «drupal/.htaccess», deshabilitamos el mod_rewrite cambiando <IfModule mod_rewrite.c> por:
<IfModule XXXmod_rewrite.c>
Finalmente, en «drupal/sites/default/settings.php», eliminamos el comentario de la siguiente línea:
$base_url = 'http://www.mysite.com';
Es una solución efectiva que he estado utilizando, aunque puede que haya mejores soluciones.