Descripción
Redirects to external URLs are not allowed by default, use \Drupal\Core\Routing\TrustedRedirectResponse for it.
Es posible que al realizar el despliegue en producción de uno de nuestros sitios Drupal, nos encontremos con este error, para solucionarlo sigue los pasos que te cuento a continuación:
Instrucciones
OPCIÓN 1
Pasos para solucionar el error "Redirects to external URLs are not allowed by default":
- Abre el archivo settings.php y añade el o los dominios que utilizas para conectarte a tu web, dentro del apartado "Trusted Host".
$settings['trusted_host_patterns'] = [ '^mywebsite\.com$', '^www\.mywebsite\.com$', ];
- A continuación, añade las siguientes líneas, justo debajo del bloque que acabas de añadir:
if (isset($GLOBALS['request']) and '/var/www/mywebsite.com/datos/web/index.php' === $GLOBALS['request']->server->get('SCRIPT_NAME')) { $GLOBALS['request']->server->set('SCRIPT_NAME', '/index.php'); }
- Por último, asegúrate de que dentro de la carpeta /web, existe un archivo .htaccess, con la siguiente declaración:
# If your site is running in a VirtualDocumentRoot at http://example.com/, # uncomment the following line: RewriteBase /
OPCIÓN 2 (Drupal en Subdirectorio)
- En la carpeta public_html, añadir o editar el .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?DOMINIO.com$
RewriteCond %{REQUEST_URI} !^/SUBFOLDER/web/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /SUBFOLDER/web/$1
RewriteCond %{HTTP_HOST} ^(www.)?DOMINIO.com$
RewriteRule ^(/)?$ web/index.php [L]
</IfModule>
- Abre el archivo settings.php y añade el o los dominios que utilizas para conectarte a tu web, dentro del apartado "Trusted Host".
$settings['trusted_host_patterns'] = [ '^mywebsite\.com$', '^www\.mywebsite\.com$', ];
- Añade, al final de tu archivo settings.php el siguiente código, modificando SUBFOLDER.
if (isset($GLOBALS['request']) and '/SUBFOLDER/web/index.php' === $GLOBALS['request']->server->get('SCRIPT_NAME')) {
$GLOBALS['request']->server->set('SCRIPT_NAME', '/index.php');
}