Hallo Zusammen,
im Rahmen des Drupal 9 Kurses erzähle ich euch hier, wie ihr ganz entspannt Drupal 9 auf einem Webpaket von Siteground einrichten könnt. Und das so, dass ihr euer Drupal Projekt mitsamt "vendor" und "web"-Ordner uploaden und nutzen könnt. Siteground ist ein sehr einfach zu bedienender Webhoster, der allerdings im sonst tollem Login/Interface keine richtige Funktion für die Umleitung auf einem Subfolder (Unterverzeichnis) anbietet.
Drupal 9 mit Unterverzeichnis auf Siteground einrichten:
1. Website in den Wartungsmodus versetzen
Setzt eure bisherige Website (auf dem lokalen oder bisherigen Webserver) in den Wartungsmodus.
2. MySQL-Datenbank sichern
Sichert eure MySQL-Datenbank mittels Backup&Migrate unter "Konfiguration > Sichern und Migrieren (Backup and Migrate). Es reicht die Datenbank einzeln zu sichern.
3. FTP-Daten auf neuem Webserver hochladen
Legt in den Site-Tools von Siteground einen FTP-Benutzer an und ladet via Filzilla (dort die Login-Daten eintragen) jetzt alle Daten inkl. Vendor und Web-Ordner in das public_html Verzeichnis von Siteground.
4. Erstellt eine MySQL-Datenbank und einen MySQL-Benutzer im Siteground-Login unter Site-Tools.
5. MySQL-Datenbank über phpmyadmin auf Siteground importieren
Importiert nun die in Punkt 2 gesicherte SQL-Daten (kann auch eine komprimierte Datei sein (zip oder ähnlich) über phpmyadmin.
6. Settings.php anpassen
Ihr müsst jetzt die settings.php Datei anpassen. Wo bislang die alten Zugangsdaten zur alten MySQL-Datenbank hinterlegt waren, müsst ihr jetzt die Daten von Siteground hinterlegen:
$databases['default']['default'] = array (
'database' => 'DATENBANKNAME',
'username' => 'DATENBANKUSERNAME',
'password' => 'PASSWORD',
'prefix' => '',
'host' => 'localhost',
'port' => '3306',
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
);
Ersetzt das "GROSSGESCHRIEBENE" mit euren Daten von Siteground.
Nun müsst ihr in der Settings.php noch weitere Daten anpassen und ergänzen. Fügt am Ende der Settings.php noch folgende Zeilen hinzu:
und jetzt noch etwas extra für Siteground-User. Das noch zusätzlich am Ende hinzufügen:
if (isset($GLOBALS['request']) and
'/web/index.php' === $GLOBALS['request']->server->get('SCRIPT_NAME')) {
$GLOBALS['request']->server->set('SCRIPT_NAME', '/index.php');
}
Speichert die settings.php und ersetzt diese auf eurem Siteground-Webserver via FTP. Stellt vor dem Überschreiben den CHMOD auf "777" um und im Anschluss (nach dem Überschreiben) wieder auf "444" um.
7. .htaccess im Public_html Verzeichnis ablegen
Damit die Weiterleitung auf ein Unterverzeichnis auf Siteground reibungslos mit Drupal 9 läuft, könnt ihr ganz einfach eine .htaccess-Datei dort ablegen. Öffnet euren Editor und fügt folgende Zeilen hinzu. Ersetzt das GROSSGESCHRIEBENE.
# blog.oscarliang.net
# Redirect Primary Domain URL to Sub-Directory using .htaccess
# Do not change this line.
RewriteEngine on
# Change domain.com to be your primary main domain.
RewriteCond %{HTTP_HOST} ^(www.)?drupalheimat.de$
# Change 'subfolder' to be the folder you want to redirect request to.
RewriteCond %{REQUEST_URI} !^/web/
# Don't change this line.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Change 'subfolder' to be the folder you want to use for your primary domain.
RewriteRule ^(.*)$ /web/$1
# Change domain.com to be your primary domain again.
# Change 'subfolder' to be the folder you will use for your primary domain
# followed by / then the main file for your site, index.php, index.html, etc.
RewriteCond %{HTTP_HOST} ^(www.)?drupalheimat.de$
RewriteRule ^(/)?$ web/index.php [L]
Alles anzeigen
Danke an blog.oscarliang.net. Dort habe ich die .htaccess-Vorlage gefunden!
Speichert diese jetzt im public_html Ordner (siehe Bild).
8. .htaccess im /web Verzeichnis anpassen
Und jetzt müssen wir noch an die .htaccess-Datei im /web Verzeichnis ran:
Öffnet diese und sucht nach:
Entfernt die # und setzt /web als Verzeichnis ein. Wie hier...
Und nun seid ihr fertig und ihr könnt Drupal ganz gewöhnlich mit perfekter Weiterleitung auf das Unterverzeichnis nutzen.