Cómo quitar la carpeta /web de la url de Drupal

Descripción

A partir de Drupal 8 se recomienda que la instalación se realice utilizando el gestor de paquetes COMPOSER para mantener una estructura de archivos más fácil de gestionar mediante línea de comandos.

Esto presenta un nuevo problema que es la creación de la carpeta "/web" dentro de esa estructura que en la mayoría de los servidores compartidos terminará mostrándose como parte de nuestra url, ya que el dominio principal apuntará por defecto a la carpeta public_html o www en lugar de "public_html/web".

Instrucciones

Para que el dominio o url de nuestra instalación usando Composer para (Drupal 8, 9 o Drupal commerce) sea: "www.misitio.com" en lugar de "www.misitio.com/web"...

  1. Abrimos el settings.php de nuestro proyecto y añadimos el siguiente código:

    if ( isset($GLOBALS['request']) && '/web/index.php' === $GLOBALS['request']->server->get('SCRIPT_NAME') ) {
        $GLOBALS['request']->server->set('SCRIPT_NAME', '/index.php');
    }
     
  2. Cremos un archivo ".htaccess" con el siguiente contenido y lo subiremos al servidor en nuestra carpeta "public_html"

    <IfModule mod_rewrite.c>
    RewriteEngine on
    # Redirect to the subdirectory because that's where Drupal is installed
    RewriteRule (.*) web/$1 [L]
    </IfModule>
     
  3. Abrimos el archivo .htaccess que trae drupal dentro de la carpeta web y modificamos esta línea, descomentándola y añadiendo /web:

      # Modify the RewriteBase if you are using Drupal in a subdirectory or in a
      # VirtualDocumentRoot and the rewrite rules are not working properly.
      # For example if your site is at http://example.com/drupal uncomment and
      # modify the following line:
         RewriteBase /web

Más Snippets