Die .htaccess Datei ist mit eine der wichtigsten Dateien um Magento korrekt zu konfigurieren. Mit diesem Tutorial möchten wir Licht ins Dunkel von Magentos htaccess Datei bringen und die jeweilige Einstellungsmöglichkeit genauer erklären, damit jeder seinen Shop optimal konfigurieren kann.
htaccess Datei Funktionen
Unter dem jeweiligen Code-Abschnitt steht die kurze Erklärung wofür dieser Teil der Datei zuständig ist. Die htaccess Datei aus der folgenden Erklärung wurde aus der Magento Version 1.9.3.2 genommen.
Common Gateway Interface (CGI)
Das Common Gateway Interface (CGI) ist ein Standard für den Datenaustausch zwischen einem Webserver und dritter Software, die Anfragen bearbeitet.Statt nur statische Seiten von einem Webserver zu laden, die dort als Ressource zur Verfügung stehen, ist es mit CGI auch möglich, HTML-Seiten dynamisch zu erzeugen.
Go Daddy
Go Daddy ist ein Domainregistrar und Webhoster, der zusätzlich e-Business-Software und -dienstleistungen anbietet. Im Jahr 2010 verwaltete Go Daddy fast 40 Millionen Domains und ist damit der weltgrößte Registrar. Der Code „Options -MultiViews“ besagt das keine MultiView Ansichten möglich sind.
1&1 PHP-5-Parser
Für deutsche 1&1 Kunden kann dieser Abschnitt wichtig sein. Dieser Abschnitt bewirkt das man beliebige Dateitypen als PHP5-Skripte parsen („ausführen“) lassen kann. Häufig besteht der Wunsch alle .php-Dateien als PHP5-Skripte auszuführen. Mit diesem Code kann man die Dateien dazu zwingen.
Default index
Dieser Abschnitt sagt lediglich, dass die index.php die standard Index-Datei ist. Möchte man eine individuelle Startseite unter einem anderen Namen haben einfach hier angeben, z.B. start.php, home.php, …
Memory Limit und Execution Time
Hier kann man definieren wie viel Speicher (memory_limit) zur Verfügung stehen soll. Zum Vergleich: Bei WordPress oder Drupal ist es empfehlenswert mindestens 32MB zu definieren. Magento ist da hungriger und sollte mindestens die im Standard angegebenen 128MB haben, je nach Größe und Server empfiehlt es sich aber noch höher auf 256MB oder gar 512MB zu gehen. Dazu die Zeile php_value memory_limit 128M mit einem # deaktivieren und darunter die Zeile mit der gewünschten Größe einfügen, z.B. php_value memory_limit 512M.
Die max_execution_time legt die maximale Zeit in Sekunden fest, die ein Skript laufen darf, bevor der Parser die Ausführung stoppt. Diese Einstellung hilft zu verhindern, dass schlampig geschriebene Skripte Ihren Server lahmlegen.
Magic Quotes
Magic_quotes_gpc ist lediglich ein Mechanismus, der ursprünglich einmal SQL-Injektionen verhindern sollte. Magic_quotes_gpc ist ein Mechanismus, der auf vom Benutzer übermittelte Werte wirkt und vor dem einfachen und dem doppelten Anführungszeichen (‚ und „), dem Backslash (\) sowie dem NUL (das Null-Byte) einen zusätzlichen Backslash einfügt.
Session Autostart
session.auto_start spezifiziert, ob das Session-Modul zu Beginn einer Anfrage automatisch eine Session starten soll oder nicht. Grundeinstellung: off (deaktiviert).
Zlib Compression
Mit zlib.output_compression werden die Seiten komprimiert, wenn der Browser einen „Accept-Encoding: gzip“- oder einen „deflate“-Header sendet. Aus dem Komprimieren resultiert eine schnellere Ladezeit.
Suhosin
Suhosin ist ein Schutzsystem für PHP-Installationen. Es wurde entwickelt, um Server und Benutzer vor bekannten und unbekannten Fehlern in PHP-Anwendungen und im PHP-Kern zu schützen. Suhosin besteht aus zwei unabhängigen Teilen, die separat oder in Kombination verwendet werden können. Der erste Teil ist ein kleiner Patch der im PHP-Kern implementiert wird und Low-Level-Schutz gegen bufferoverflows oder Format-String-Schwachstellen bietet. Der zweite Teil ist eine leistungsstarke PHP-Erweiterung, die alle anderen Schutzmechanismen implementiert.
Kompatibilätsmodus
Aktiviert den Kompatibilätsmodus mit der Zend Engine 1 (PHP4). Diese Einstellung wirkt sich auf das Klonen, Casten und Vergleichen von Objekten aus. In diesem Modus werden Objekte standardmäßig als Werte anstelle von Referenzen übergeben. Dieses Feature wurde ab PHP 5.3.0 entfernt.
Security Filter
Diese Funktionen überwachen alle Zugriffe. Um Probleme beim Bilder-Upload zu verhindern, sind sie ausgeschaltet.
Apache Datei Kompression
Eine Kompression reduziert die Reaktionszeiten durch Reduzieren der HTTP-Antwort. Beginnend mit HTTP/1.1, geben Web-Clients Unterstützung für die Komprimierung mit dem Accept-Encoding-Header in der HTTP-Anforderung. Gzip reduziert im Allgemeinen die Antwortgröße um ca. 70%. Apache 1.3 verwendet mod_gzip, Apache 2.x verwendet mod_deflate. Je nachdem was sie verwenden, einfach die Raute # davor entfernen.
SSL Übertragung
Aktiviert die sichere Übertragung für den CGI Modus.
Suchmaschinenfreundliche URLs
Die RewriteEngine übersetzt Web-Adressen in lese- und suchmaschinenfreundliche URLs, z.B. meine-shop-adresse.de/b/artikel?id=12 in meine-shop-adresse.de/blog/beispielartikel. Allein aus SEO-Sicht aktiviert lassen!
RewriteBase
Soll die Seite in einem Unterordner erreichbar sein, kann hier der entsprechende Ordner angegeben werden, z.B. um das Beispiel von oben weiter zu führen: meine-shop-adresse.de/magento/blog/beispielartikel
RewriteRule API Processing
Nehmen Sie die Raute vor dieser Zeile weg, falls Sie für alle Typen API Processing zulassen möchten.
RewriteRule Rest API
Hier ist die rewrite rule für die Rest API angegeben.
HTTP authorization
Rewrite Rule der Adresse zur HTTP Autorisation in einer CGI Umgebung.
Trace und Track HTTP Methoden
Die TRACE und TRACK HTTP Methoden werden hier ausgeschaltet. Die TRACE- und TRACK-Protokolle sind HTTP-Methoden, die beim Debuggen von Webserver-Verbindungen verwendet werden. Obwohl diese Methoden für legitime Zwecke nützlich sind, können sie die Sicherheit Ihres Servers beeinträchtigen, indem sie Cross-Site-Scripting-Angriffe (XSS) ermöglichen. Durch die Ausnutzung bestimmter Browser-Schwachstellen kann ein Angreifer die TRACE- und TRACK-Methoden manipulieren, um die sensiblen Daten Ihrer Besucher abzufangen. Die Lösung ist natürlich diese Methoden auf Ihrem Webserver zu deaktivieren.
Mobiles Verzeichnis
Möchten Sie Ihre „mobilen Besucher“ in einen anderen Pfad weiterleiten, ersetzen Sie mobiledirectoryhere in den gewünschten Pfadnamen.
404 Fehler
Werden Medien-, CSS- oder Jacascript-Dateien in den Ordnern media, skin und js nicht gefunden (weil diese verlinkt aber gelöscht oder verschoben wurden), wird ein 404 Fehler gesendet.
Rewrite Conditions
Hier wird geprüft ob Dateien (!-f), Verzeichnisse (!-d) und Links (!-l) existieren. Wenn ja, werden sie zum Pfad hinzugefügt.
Rewrite Condition index
Treffen alle anderen Rewrite Regeln nicht zu, wird zu index.php geleitet.
Character encoding
AddDefaultCharset sollte nur verwendet werden, wenn von allen Textressourcen für die es gilt bekannt ist, dass sie in dieser Zeichkodierung vorliegen, oder wenn es zu unbequem ist ihre Zeichenkodierung individuell zu benennen.
Expires header
Web-Designs werden immer umfangreicher, d.h. es werden mehrere Skripte, Stylesheets, Bilder auf einer Seite geladen. Ein erstmaliger Besucher der Seite kann mehrere HTTP-Anforderungen stellen, aber mit den Expires-Header werden diese Komponenten zwischengespeichert, so lange der Header gilt.
Zugriffsbeschränkungen
Hier kann man angeben wer die Seite sehen darf bzw darauf zugreifen kann. Als Standard wird die Seite allen gezeigt, man kann aber auch Einschränkungen machen. Dazu einfach die Zeile „Allow from all“ ändern in z.B. „Allow from 192.168.1.104“ um nur Personen mit der IP zu geben.
Installierte Magento Version verbergen
An dieser Stelle wird der Zugriff auf die Release Notes verweigert, um die Offenlegung der installierten Magento-Version zu verhindern.
Entity Tags
Möchte man Magento auf mehrere Server aufteilen, benötigt man einen Mechanismus der die Dateien identifiziert. Entity Tags (ETags) sind ein Mechanismus für Web-Server und Browser um festzustellen ob die Komponente im Browser-Cache mit der auf dem Ursprungs-Server zusammenpasst. Ein ETag ist eine Zeichenfolge, die eindeutig eine bestimmte Version einer Komponente identifiziert.
Zugriff auf die Datei cron.php
Die letzte Funktion in der Datei bewirkt das der Zugriff auf die Datei cron.php (die die Cronjobs steuert) verweigert wird. Man kann aber auch den Zugriff gestatten und eine Passwortabfrage davor schalten wenn man die Rauten entfernt.
hallo,
definiert man bei magento auch die Standard-Domain? Wenn ja, an welcher Stelle fügt man die Umleitung ein?
Habe folgenden Code ganz oben einebaut und damit läuft der shop dann nicht.
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^das-perfekte-bild.de$ [NC]
RewriteRule ^(.*)$ http://das-perfekte-bild.de/$1 [L,R=301]
Danke für die Hilfe
Hi Thorsten, probier es mal hiermit:
Beispiel (für Umleitung von http://www.domain.de/index.html -> http://www.domain.de/):
Hallo,
Ich habe folgendes Problem, ich glaube meine HTACCES verhindert das der Shop komplett auf SSL umgestellt wird. Leider wird mit bei Google Chrome kein grüner Schlüssel angezeigt. Ich habe die Einstellungen schon in Konfiguration ► Web vorgenommen Leider ohne Erfolg.
Hier die HTACCES:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?hqs-shop.de$
RewriteCond %{REQUEST_URI} !^/shop/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /shop/$1
RewriteCond %{HTTP_HOST} ^(www.)?hqs-shop.de$
RewriteRule ^(/)?$ shop/index.php [L]
Vielen Dank für deine Hilfe
Hallo Florian,
meist liegt es daran dass Dateien mit absolutem Pfad eingebaut sind (CSS, Bilder, etc…). Hier muss dann entweder ein relativer Pfad verwendet werden oder auch von einer https-Adresse geladen werden.
Bei den beliebten Google Webfonts muss man z.B. auf folgendes achten:
<link href='http://fonts.googleapis.com/css?family=Dosis:400,700' rel='stylesheet' type='text/css'>
ändern zu:
<link href='//fonts.googleapis.com/css?family=Dosis:400,700' rel='stylesheet' type='text/css'>
Beste Grüße
Sebastian
Hallo,
ich würde gerne den Magentoshop, solange ich noch daran entwickle, hinter einer htaccess abfrage verstecken. Muss ich dazu einfach nur die Abfrage ganz oben in die htaccess einbauen?
Vielen Dank und Gruß,
Thomas
Hey Thomas,
ja, dazu musst du einfach die passenden Zeilen am besten ganz oben in die htaccess Datei packen. Eine genaue Anleitung dazu findest du zum Beispiel hier.
Beste Grüße
Sebastian
Pingback: Die beliebtestens Magento News und Tutorials 2014 | Mag-tutorials.de
Pingback: Beliebteste Magento Tutorials und News 2013 | Mag-tutorials.de