In Shared-Hosting-Angeboten zeigt die Hauptdomain auf /public_html. Dieses Standardverhalten kann Probleme bereiten, wenn Ihre Drupal-Installation index.php und vendor trennt.
Um das Problem zu lösen, nehmen wir einen praktischen Fall.
Wir haben eine Drupal-Installation, die der folgenden Logik folgt:
- public
- public/web/index.php
- public/vendor/
Wir komprimieren unseren öffentlichen Ordner und legen ihn in den Ordner public_html auf dem Server. Dann dezziped man und hat: public_html/public/.
Um auf die Website zuzugreifen, schreiben Sie: mon.domaine.com/public/web,
Um direkt von der Domain aus auf die Website zugreifen zu können, müssen wir :
- Im Wurzelverzeichnis des Servers eine .htaccess-Datei hinzufügen.
RewriteEngine on
# Rediregiger vers un sous parrent.
RewriteCond %{HTTP_HOST} ^(www\.)?mondomaine\.com$
RewriteCond %{REQUEST_URI} !core/authorize.php
RewriteRule !^public/web/ /public/web%{REQUEST_URI} [L]
- Fügen Sie am Ende der Datei settings.php die folgende Zeile ein
# Pour la redirection.
if (isset($GLOBALS['request'])) {
if ('/public/web/index.php' === $GLOBALS['request']->server->get('SCRIPT_NAME')) {
$GLOBALS['request']->server->set('SCRIPT_NAME', '/index.php');
}
elseif ($GLOBALS['request']->server->get('SCRIPT_URL') === '/core/authorize.php') {
$GLOBALS['request']->server->set('SCRIPT_FILENAME', '/public/web/core/index.php');
}
}
# Vous pouvez également utiliser le chemins absolue complet
if (isset($GLOBALS['request']) and '/public/web/index.php' === $GLOBALS['request']->server->get('SCRIPT_NAME')) {
$GLOBALS['request']->server->set('SCRIPT_NAME', '/index.php');
}