1.- Was ist eine .htaccess?
Die .htaccess-Datei (Hypertext Access) ist der Standardname für die Konfigurationsdatei von Apache auf Verzeichnisebene. Sie wird verwendet, um die Konfiguration von Direktiven und Parametern anzupassen, die in der Hauptkonfigurationsdatei des Hostings definiert sind.
2.- Wie erstellen wir eine .htaccess-Datei und wo platzieren wir sie?
Um eine .htaccess-Datei zu erstellen, öffnen Sie einen Texteditor und geben Sie den erforderlichen Code ein. Speichern Sie die Datei als Textdatei (.txt), z.B. „htaccess_file.txt“, und
laden Sie sie per FTP in den Ordner hoch, in dem sie verwendet werden soll. Benennen Sie die Datei auf dem Server von „htaccess_file.txt“ in „.htaccess“ um.
Wichtig: Wenn Sie bereits eine .htaccess-Datei in Ihrem Hosting haben, können Sie diese verwenden, um diese Konfigurationen anzuwenden. Wenn Sie kürzlich eine
Domain-Migration durchgeführt haben, müssen Sie möglicherweise ebenfalls Änderungen vornehmen.
Die .htaccess-Datei muss innerhalb des Ordners platziert werden, in dem sie wirksam werden soll. Wenn Sie beispielsweise einen Ordner namens „private“ passwortgeschützt machen möchten, platzieren Sie die .htaccess-Datei im Ordner „private“.
Die .htaccess-Datei hat eine Vielzahl von Verwendungsmöglichkeiten und Funktionen, die auf einer Website sehr nützlich sein können. Im folgenden Tutorial zeigen wir einige der am häufigsten verwendeten Funktionen.
3.- Häufige .htaccess-Funktionen
Die .htaccess-Datei hat eine große Anzahl von Funktionen. In diesem Tutorial zeigen wir einige der häufigsten und wie Sie sie konfigurieren:
Subdomain auf Unterordner umleiten In einigen Situationen müssen Sie möglicherweise mit .htaccess eine Weiterleitung zum Ordner einer Subdomain erstellen. Wenn die Subdomain „test.example.org“ beispielsweise auf den Ordner „example.org/test“ zeigen soll, müssen Sie die folgenden Direktiven zur .htaccess-Datei hinzufügen:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^test.example.com$
RewriteCond %{REQUEST_URI} !^/test/
RewriteRule (.*) /test/$1
Die erste Zeile aktiviert die Rewrite-Engine und muss nur angegeben werden, wenn sie nicht zuvor aktiviert wurde.
Die dritte und vierte Zeile führen die Weiterleitung durch.
Die zweite Zeile verhindert, dass die Weiterleitung erneut angewendet wird, wenn sich die Anfrage bereits im Ordner „test“ befindet. Dies ist notwendig, um Fehler und Schleifen zu vermeiden, da die .htaccess-Datei beim Weiterleiten der Anfrage an den Ordner „test“ erneut ausgeführt wird.
Website mit 301-, 302-Weiterleitungen umleiten Wenn Sie beim Zugriff auf die Website die Seite auf eine andere umleiten möchten:
(Bei „R=301“ können Sie die gewünschte Weiterleitungsmethode angeben: 301, 302, usw.)
Website auf einen Unterordner umleiten Wenn sich Ihre Website in einem anderen Unterordner als dem Ordner „web“ befindet, können Sie alle Anfragen auf diesen Unterordner umleiten:
RewriteEngine onRewriteCond %{HTTP_HOST} ^example.org\.org$RewriteRule (.*) http://www.example.org/$1 [R=301,L]RewriteRule ^$ folder [L]
Wobei:
example.org\.org könnte zum Beispiel cdmon.com\.com sein.
Der Ordner könnte zum Beispiel „wordpress“ sein.
Zugriffskontrolle für die Website Sie können den Zugriff so konfigurieren, dass Sie, wenn Sie aus irgendeinem Grund den Zugriff für alle Benutzer verweigern oder nur den Zugriff von einer bestimmten Gruppe von IP-Adressen erlauben möchten, dies tun können.
Require all denied
Require ip 124.34.48.165
Require ip 102.54.68.123
Die IPs 124.34.48.165 und 102.54.68.123 sind die IPs, die Zugriff auf die Website haben.
Require all granted
Require not ip 145.186.14.122
Require not ip 124.15
Die IP 145.186.14.122 und das Netzwerk 124.15.x.x haben keinen Zugriff auf die Website.
Zugriffskontrolle für Ordner Eine sehr häufige Verwendung von .htaccess besteht darin, den Zugriff auf bestimmte Ordner einzuschränken. Sie möchten möglicherweise den Zugriff auf einen Ordner vollständig deaktivieren, z.B. einen Ordner, der Programmbibliotheken enthält, die in die Hauptdateien eingebunden sind. In diesem Fall können nur die Hauptdateien über das Dateisystem auf sie zugreifen, aber sie sind nicht über das Web zugänglich. Erstellen Sie einfach eine .htaccess-Datei in diesem Ordner mit dem folgenden Code:
#deny all access
Require all denied
#deny all access
Require all denied
Require ip 212.267.98.14
Require ip 192.168.0.0/24
Require all denied
Sie können .htaccess auch verwenden, um den Inhalt eines Ordners als Verzeichnisliste anzuzeigen.
Options +Indexes
Options +Indexes
IndexOptions -FancyIndexing
IndexIgnore*
Wenn Sie möchten, dass Ihre Website immer ohne www angezeigt wird, fügen Sie den folgenden Code zur .htaccess-Datei hinzu:
RewriteEngine OnRewriteCond %{REQUEST_URI} !^/(robots\.txt|favicon\.ico|sitemap\.xml)$RewriteCond %{HTTP_HOST} !^example\.org$ [NC]RewriteRule ^(.*)$ http://example.org/$1 [R=301,L]
Umgekehrt, um die Website immer mit www anzuzeigen:
RewriteEngine OnRewriteCond %{REQUEST_URI} !^/(robots\.txt|favicon\.ico|sitemap\.xml)$RewriteCond %{HTTP_HOST} !^www\.example\.org$ [NC]RewriteRule ^(.*)$ http://www.example.org/$1 [R=301,L]
Wobei:
example.org könnte zum Beispiel cdmon.com sein.
SEO-freundliche Website-Umleitung Wenn Sie Domainnamen übertragen haben oder auf eine bestimmte Seite umleiten möchten, ohne die Suchergebnisse wie Google zu beeinträchtigen, können Sie den folgenden Code verwenden:
Wenn Sie möchten, dass beim Versuch, auf eine bestimmte Datei zuzugreifen, auf eine andere Datei umgeleitet wird, können Sie die Direktive „redirect“ verwenden:
Auf sichere HTTPS-Verbindung umleiten Wenn Sie Ihre gesamte Website auf eine sichere (HTTPS)-Verbindung umleiten möchten, ist dies sehr nützlich, wenn Sie z.B. ein SSL-Zertifikat haben und damit arbeiten möchten.
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
Benutzer zur Nutzung von HTTPS für einen bestimmten Ordner umleiten Wenn Sie nur einen bestimmten Ordner auf eine sichere (HTTPS)-Verbindung umleiten möchten, anstatt die gesamte Website – z.B. wenn Sie einen Shop in einem separaten Ordner haben – sollten Sie den folgenden Code verwenden:
RewriteEngine OnRewriteCond %{SERVER_PORT} 80RewriteCond %{REQUEST_URI} folder_nameRewriteRule ^(.*)$ https://www.example.org/$1 [R,L]
Hotlinking besteht darin, direkt auf Dateien – meist Bilder und Videos – zu verlinken, die zu einer anderen Website gehören. Diese Praxis verbraucht die Bandbreite der ursprünglichen Website, die das Bild hostet. Um zu verhindern, dass andere Ihre Bandbreite „stehlen“, können Sie .htaccess so konfigurieren, dass Hotlinking blockiert wird.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.org/.*$ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ [L]
Die letzte Zeile wird verwendet, um anzugeben, welche Arten von Inhalten (basierend auf Dateierweiterungen) Sie nicht als Hotlinking zulassen möchten:
RewriteRule .*\.(jpe?g|gif|bmp|png)$ [L]
Alternativ können Sie diese andere Regel verwenden, die auch ein Warnbild („no_steal_bandwidth.gif“, das Sie zuvor erstellt haben müssen) anzeigt, um anzuzeigen, dass das Bild von Ihrer Website geladen wird.
RewriteEngine onRewriteCond %{REQUEST_URI} !^/IMG/no_steal_bandwidth.gif$RewriteCond %{HTTP_REFERER} !^$RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.org/.*$ [NC]RewriteRule .*(gif|jpe?g|png|bmp)$ http://example.org/IMG/no_steal_bandwidth.gif [NC,R,L]
In der letzten Zeile geben Sie die Dateierweiterungen an, die Sie vom Hotlinking ausschließen möchten, und das Warnbild, das Sie anzeigen möchten.
Sie können die Standard-Indexseite Ihrer Website auf etwas anderes als die bekannte „Index“-Seite festlegen. Hier wird „about.html“ als Startseite festgelegt:
#Serve Alternate Default Index Page
DirectoryIndex about.html
Der folgende Code erhöht nicht direkt die allgemeine Ladegeschwindigkeit der Website, sorgt aber dafür, dass sie beim erneuten Besuch desselben Benutzers schneller lädt, indem er einen 304-Status für Elemente sendet, die nicht geändert wurden. Sie können die Caching-Häufigkeit ändern, indem Sie die Anzahl der Sekunden ändern (in diesem Beispiel ist sie auf einmal pro Tag eingestellt):
FileETag MTime Size
ExpiresActive on
ExpiresDefault "access plus 86400 seconds"
Zeichenkompatibilität verbessern Diese Option ist für diejenigen gedacht, die keinen vom Server erkannten Standard-Zeichensatz verwenden. Mit dieser Einstellung wird der bekannte 500-Fehler vermieden.
AddDefaultCharset utf-8
SEO-freundliche URLs erstellen Eine SEO-freundliche URL besteht darin, eine URL voller Parameter zu verschleiern, um sie sauberer und eleganter zu machen und bessere Suchmaschinenrankings zu erzielen. Je nachdem, wie die Website programmiert ist, variiert der Code, den Sie verwenden müssen.
Beispiel 1:
Zum Beispiel ist „ordner/datei.php?id=120&language=de“ keine SEO-freundliche URL, daher sollte sie in „ordner/datei/120/de“ umgewandelt werden, was eleganter ist und bei der Suchmaschinenpositionierung hilft. Dies ist eine SEO-freundliche URL. Mit der .htaccess-Datei können Sie diese „Verschleierung“ für die URL durchführen.
Sie haben einen Ordner auf Ihrer Website, der eine Datei enthält, die Parameter empfängt.
example.org/ordner/datei.php?id=25
Dann müssen Sie innerhalb dieses Ordners eine .htaccess-Datei mit dem folgenden Code erstellen:
Options +FollowSymLinks
RewriteEngine on
RewriteRule folder/(.*)/(.*).php$ /folder/file.php?id=$1
Die letzte Zeile führt die Änderung durch.
(.*) wird der Parameter sein, den Sie übergeben, $1.
(.*).php$ wird der Dateiname sein, der zum „Verschönern“ der URL verwendet wird.
Sobald die .htaccess-Datei erstellt ist, sollten Sie in Ihrem Website-Link Folgendes verwenden:
Link zu Datei 25
Daher ist „ordner/25/datei-name.php“ dasselbe wie „/ordner/datei.php?id=25“.
Beispiel 2:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ /index.php?parameter=$1 [QSA,L]
Beispiel 3:
Ein weiteres Beispiel für die Umwandlung in SEO-freundliche URLs.
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)/page-([0-9]+)$ /index.php?parameter=$1&paginator=$1 [QSA,L]
Beispiel 4:
Code, der von WordPress verwendet wird, um SEO-freundliche URLs zu erstellen.
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]