drupal

Desplegando un proyecto Drupal 9 en un hosting con cPanel

drupal-9-cPanel

 

Si creamos un proyecto Drupal 9 con composer de la manera recomendada por drupal.org con el comando:

 

composer create-project drupal/recommended-project my_site_name_dir

 

Composer creará una estructura de carpetas en la que encontraremos la carpeta vendor un nivel más arriba de la carpeta web (la raíz del proyecto), así que si tenemos que desplegar nuestro proyecto en un hosting que cuenta con cPanel nos encontramos con un inconveniente ya que el cPanel esperara en la carpeta public_html la raíz de nuestro proyecto.

Para solucionar esto sin afectar la estructura de nuestro proyecto y de la manera menos invasiva haremos lo siguiente:

  • Subiremos nuestros archivos como están (en public_html quedarían las carpetas vendor y web).
  • En public_html creamos un archivo .htaccess con el siguiente código dentro:
<FilesMatch "\.(engine|inc|install|make|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml)(~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\.(?!well-known).*|Entries.*|Repository|Root|Tag|Template|composer\.(json|lock)|web\.config)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig|\.save)$">
  <IfModule mod_authz_core.c>
    Require all denied
  </IfModule>
  <IfModule !mod_authz_core.c>
    Order allow,deny
  </IfModule>
</FilesMatch>

RewriteEngine on
# Change "example.com" to your own domain name:
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
# Change "directory" to the directory where Site is installed:
RewriteCond %{REQUEST_URI} !^/web/

# Change "directory" to the directory where Site is installed:
RewriteRule ^(.*)$ /web/$1
# Change "example.com" to your own domain name:
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
# Change "directory" to the directory where Site is installed:
RewriteRule ^(/)?$ web/index.php [L]
  • Reemplazamos example.com con nuestro dominio.
  • En el archivo settings.php agregaremos a la parte final del archivo el siguiente código:
/* Fix redirect issue to subdir (/web) on drupal 8/9 */
if (isset($GLOBALS['request']) and
'/web/index.php' === $GLOBALS['request']->server->get('SCRIPT_NAME')) {
$GLOBALS['request']->server->set('SCRIPT_NAME', '/index.php');
}

Finalizados estos pasos comprobaremos nuestro dominio para verificar el correcto funcionamiento de nuestro proyecto.

Me pareció interesante el artículo

Deseo más información

O también puedes comunicarte con nosotros.

por whatsapp por whatsapp

Añadir nuevo comentario

Me gustaría más información sobre:

CAPTCHA