This page has been robot translated, sorry for typos if any. Original content here.

.Htaccess und mod_rewrite Tutorial

Nach Thema:


Файл-конфигуратор Apache-серверов .htaccess


Eine Kurzanleitung zu htaccess und mod_rewrite

Apache- "Chips" verwenden mod_rewrite und htaccess werden von vielen enttäuschten Webmastern als unerreichbar angesehen. Dies ist jedoch eine der schwierigsten Aufgaben, die fast alle Webentwickler erfüllen.

Ich möchte Ihnen eine einfache Lösung anbieten, anstatt nach komplexeren zu suchen, um zu verstehen, wie mod_rewrite und htaccess funktionieren . Die meisten Anwendungsbeispiele in diesem Artikel können einfach kopiert und auf Ihren Webserver hochgeladen werden.

Um nicht das Gleiche mit Hunderten von anderen Webmastern zu wiederholen, habe ich beschlossen, diese Hint-Seite einfach für den öffentlichen Gebrauch zu erstellen.

Auch hier ist htaccess eine Konfigurationsdatei, mit der Sie den Apache-Webserver verwalten können. Mod_rewrite ist eine Rewrite-Engine, mit der der Webserver die URL ändern kann, wenn sie geladen wird.

Die Datei htaccess ist eine Textdatei namens .htaccess . Man könnte sogar sagen, dass dies eine Datei ist, die nur aus einer Erweiterung besteht, weil sie keinen nominalen Teil enthält (bis zum "Punkt" -Zeichen). Normalerweise befindet sich diese Datei im Hauptstammverzeichnis Ihres Servers, Sie können jedoch auch separate htaccess- Dateien für verschiedene Verzeichnisse auf Ihrer Site erstellen.

Heiligsprechung

Das einfachste Beispiel besteht darin, sicherzustellen, dass die Site keine Kanonisierungsfehler für die Homepage enthält.

Viele Webmaster leiden unter nicht sehr guten Platzierungen in Suchmaschinen, da es verschiedene Versionen der URL der Homepage gibt, zum Beispiel:

  http://www.site.com 
http://site.com
http://www.site.com/index.html
http://site.com/index.html

Diese Seiten sehen wie verschiedene URLs aus, obwohl sie auf denselben Inhalt verweisen. Google wird eventuell entscheiden, welche Version korrekter ist, aber es kann eine lange Zeit dauern, und Sie haben möglicherweise zusätzliche Probleme während dieser Zeit.

Um dieses Problem zu lösen, fügen Sie einfach die folgenden Zeilen zu Ihrer htaccess-Datei hinzu:

  Optionen + FolgenSymLinks 
RewriteEngine an
RewriteCond% {HTTP_HOST} ^ site.com
RewriteRule (. *) Http://www.site.com/$1 [R = 301, L]
RewriteCond% {THE_REQUEST} ^ [AZ] {3.9} \ / index \ .html \ HTTP /
RewriteRule ^ index \ .html $ http://www.site.com/ [R = 301, L]

Mit diesem Code können Sie alle möglichen Varianten Ihrer Homepage auf http://www.site.com umleiten.

Verwandeln Sie HTML-Dateien in PHP

Manchmal müssen Sie PHP-Code auf den HTML-Seiten einer statischen Site verwenden. Anstatt alle Ihre HTML-Seiten auf ihre entsprechenden PHP-Versionen umzuleiten, müssen Sie Ihrem Server lediglich sagen, dass er die HTML-Dateien als PHP analysieren muss.

  AddHandler-Anwendung / x-httpd-php .html 

Dieser Code funktioniert mit allen Dateien. Wenn Sie also dynamische XML- oder ASP-Dateien erstellen möchten, die sich wie PHP-Dateien verhalten, müssen Sie nur die folgenden Änderungen vornehmen:

  AddHandler-Anwendung / x-httpd-php .xml 
AddHandler-Anwendung / x-httpd-php .asp

Fehlerseiten

Benutzerdefinierte Fehlerseiten können einfach konfiguriert werden, zum Beispiel in CPanel (oder DirectAdmin), aber wenn Sie die Fehlerseite über eine htaccess-Datei anpassen möchten, fügen Sie die folgende Zeile hinzu:

  # Verarbeitungsfehler 404 - Datei nicht gefunden 
ErrorDocument 404 http://www.site.com/404.php
# Verarbeitungsfehler 403 - Zugriff verweigert
ErrorDocument 403 http://www.site.com/403.php

Verzeichnisindexierung

Um zu verhindern, dass der Googlebot Verzeichnisse indexiert , müssen Sie eine Indexseite für die erforderlichen Verzeichnisse definieren. Dies ist auf einigen Servern nicht erforderlich.

  Verzeichnisindex index.php3 

Ich ziehe es vor, auf die Indexseite eines Verzeichnisses oder einer anderen geeigneten Seite umzuleiten. Zum Beispiel kann www.site.com/images/ zu www.site.com umgeleitet werden, und www.site.com/forum/ kann zu www.site.com/forum/index.php umgeleitet werden

Seiten umleiten

Ein großartiges Beispiel für die Verwendung von htaccess zum Umleiten einer Seite an eine andere:

  Redirect 301 /old-page.php http://www.site.com/new-page.php 

Leite deinen Feed zu Feedburner um

Wenn Sie Ihren Feed zum Feedburner-Dienst wechseln möchten, müssen Sie Ihren aktuellen Feed an die neue Adresse http://feeds.feedburner.com/blog-feed umleiten.

Die Umleitung sollte auf alle Besucher mit Ausnahme des Feedburner-Roboters angewendet werden:

  RewriteCond% {HTTP_USER_AGENT}! FeedBurner 
RewriteRule ^ dein-feed \ .xml $ http://feeds.feedburner.com/blog-feed [R, L]

Verbesserter Hotlink-Schutz

Wenn Sie verhindern möchten, dass andere Websites direkt mit Bildern auf Ihrer Website verlinkt werden, Google-, Yahoo- und MSN-Suchmaschinen diese indizieren können, müssen Sie den folgenden Code verwenden:

  RewriteEngine an 
RewriteCond% {HTTP_REFERER}.
RewriteCond% {HTTP_REFERER}! ^ Http: // ([^.] + \.)? Site \. [NC]
RewriteCond% {HTTP_REFERER}! Google \. [NC]
RewriteCond% {HTTP_REFERER}! Suche \? Q = Cache [NC]
RewriteCond% {HTTP_REFERER}! Msn \. [NC]
RewriteCond% {HTTP_REFERER}! Yahoo \. [NC]
RewriteCond% {REQUEST_URI}! ^ / Hotlinker \ .gif $
RewriteRule \. (Gif | jpg | png) $ /hotlinker.gif [NC, L]

Image hotlinker.gif ist ein Bild, das Sie erstellt haben. Ich schlage vor, etwas wie "Dieses Bild ist auf www.site.com" und Ihr Logo zu verwenden.

Persönlich erlaube ich einen Hotlink, aber ich verwende eine bestimmte Lösung, die den Google Bilder Service und die Hotlinker-Sites verwendet, um Links zu meiner Website zu erhalten .

Erstellen von NC-Referenzen mit mod_rewrite

Das Apache Rewrite Modul wird hauptsächlich verwendet, um dynamische URLs wie www.site.com/product.php?id=123 in statische und benutzerfreundliche URLs wie www.site.com/product/123 umzuwandeln.

  RewriteEngine an 
RewriteRule ^ Produkt / ((//) / Produkt Produkt.php? Id = $ 1 [L]

Ein weiteres Beispiel, das die URL führt: www.yoursite.com/script.php?product=123 zum Formular www.yoursite.com/cat/product/123/

  RewriteRule cat /(.*)/(.*)/$ /script.php?$1=$2 

Löschen von Abfragezeichenfolgen

Einige Websites stellen eine Verbindung zu Ihnen her, indem Sie eine Abfragezeichenfolge hinzufügen. Sie können beispielsweise über den Link http://www.site.com/index.php?source=seoblog auf Ihre Website verweisen, um zu erfahren, woher der Traffic stammt. Dies führt dazu, dass auf Ihrer Website doppelte Inhalte angezeigt werden. Daher müssen Sie eine Weiterleitung zu Ihrer Startseite einrichten:

  RewriteCond% {QUERY_STRING} ^ source = RewriteRule (. *) / $ 1?  [R = 301, L] 

Alles für jetzt. Wenn Sie etwas hinzuzufügen haben, frage ich in kamenty ...

Die meisten Hosting-Sites haben zwei oder mehr Versionen von PHP. Normalerweise ist der Standardwert 4. Um Ihre PHP-Skripte in Version 5 zu verarbeiten, können Sie jedoch in htaccess schreiben:

  AddType-Anwendung / x-httpd-php5 .php 

Oder Sie können die Erweiterung .php5 jeder Datei anstatt nur .php hinzufügen.
Dies ist für den Fall, dass Sie zu faul sind, htaccess umzuleiten.






Beispiele für das Festlegen der .htaccess-Datei

Während einige unserer tapferen seo "Gurus" fremde Artikel übersetzen und sich nicht darum kümmern, einen Link zum Originalartikel zu installieren, gebe ich Ihnen eine Auswahl an Codes, um .htaccess anzupassen.

Fast alle Artikel sind erforderlich außer

  • Redirect und Blocking - sie werden nach Bedarf konfiguriert
  • sowie die Einstellungen der CNC (Human-Understanding-URL) - in der Regel können Sie mit der CMS-Funktionalität arbeiten

Wie erstelle ich .htaccess?

  1. Öffne das Notizbuch
  2. schreibe den Code (und du kannst es später tun :)
  3. Speichern Sie das Dokument mit dem Namen .htaccess
  4. füllen Sie den Stamm der Website (oder in dem Ordner auf dem Server, wo wir die Einstellungen vornehmen)

* youritename.ru in den Beispielen ersetzen die Adresse Ihrer Domain

Htaccess Standardeinstellungen

Htaccess Standardeinstellungen

1. Legen Sie die Standardstartseite fest

  DirectoryIndex Seitenname.html 

2. Definition von Fehlerseiten in .htaccess

  ErrorDocument 403 /403.php 
Fehlerdokument 404 /404.php
ErrorDocument 500 / 500.php
Dementsprechend können die Adresse und der Dateiname unterschiedlich sein, z. B. /error/page404.html

3. Schutz vor Hotlinks
Die Tatsache, dass Inhalte von Websites gestohlen werden, ist keine Neuigkeit mehr. Aber es passiert, dass die Stange mit den Bildern. Hier, um Serverlast und Datenverkehr zu vermeiden, schreiben wir:

  RewriteEngine Ein 
RewriteCond% {HTTP_REFERER}! ^ $

# Domains, die mit Bildern von Ihrer Site verlinkt werden können
RewriteCond% {HTTP_REFERER}! ^ Http: // ([-a-z0-9] \.)? IhrNameName \ .ru [NC]

# zeige keine Bilder bei Hotlinks
RewriteRule \. (Gif | jpe? G | png) $ - [F, NC, L]
Wenn Sie möchten, dass ein bestimmtes Bild auf einer fremden Website anstelle von 403 Fehlern angezeigt wird, sollte die letzte Zeile wie folgt ersetzt werden:
  RewriteRule \. (Jpg | png | gif) $ http://yoursitename.com/images/bildname.jpg [NC, R, L] 

4. Erzwingt das Speichern der Datei anstelle des Öffnens
Wenn Sie möchten, dass Besucher sie speichern, anstatt die Datei online zu durchsuchen, schreiben wir in .htaccess:

  AddType application / octet-stream .doc .mov .avi .pdf .xls .mp4 

5. Datei-Caching
WordPress hat dafür ein spezielles Plugin: wp-super-cache. Wenn Sie einen CMS verwenden, der das Caching nicht unterstützt, können Sie in .htaccess die folgenden Einstellungen vornehmen

  # Caching HTML und HTM für einen Tag 
<FilesMatch ". (Html ​​| htm) $">

Kopfsatz Cache-Control "max-age = 43200"
</ FilesMatch>

# CSS, CSS und Txt-Dateien für eine Woche zwischenspeichern
<FilesMatch ". (Js | css | txt) $">

Kopfsatz Cache-Control "max-age = 604800"
</ FilesMatch>

# Caching Flash und Bilder für den Monat
<FilesMatch ". (Flv | swf | ico | gif | jpg | jpeg | png) $">

Kopfsatz Cache-Control "max-age = 2592000"
</ FilesMatch>

# Verbot von Caching-Skripten
<FilesMatch "\. (Pl | php | cgi | spl | scgi | fcgi) $">

Header deaktiviert Cache-Control
</ FilesMatch>
Der maximale Altersparameter wird in Sekunden angegeben.

6. Aktivieren Sie Fehler zur Debug-Zeit.

  php_flag display_errors on 

Umleitung mit Hilfe von .htaccess einstellen

Umleitung mit Hilfe von .htaccess einstellen

1. 301 Weiterleitungen
Die beste Lösung besteht darin, Besucher von alten zu neuen Adressen umzuleiten, wenn sich die Struktur der Website im Laufe der Zeit geändert hat und die alten URLs irgendwo geblieben sein könnten.

  Redirect 301 /oldpage.html http://yoursitename.ru/newpage.html 

Es gibt noch eine andere Option:
  Redirect permanent /oldpage.html http://yoursitename.com/newpage.html 
Aber was ist der grundlegende Unterschied zwischen ihnen, um ehrlich zu sein, kann ich es nicht erklären. Vielleicht wird jemand von Lesern erzählen.

2. Bonding Domains mit www und ohne www
Redirect von youritename.ru zu www.yoursitename.ru

  RewriteEngine Ein 
RewriteBase /
RewriteCond% {HTTP_HOST}! ^ Www.yoursitename.com $ [NC]
RewriteRule ^ (. *) $ Http://www.yoursitename.ru/$1 [L, R = 301]
Umgekehrte Umleitung
  RewriteEngine Ein 
RewriteBase /
RewriteCond% {HTTP_HOST}! ^ Yoursitename.com $ [NC]
RewriteRule ^ (. *) $ Http://yoursitename.ru/$1 [L, R = 301]

3. 302 Umleitung
Wenn Sie an der Website arbeiten, können Sie Besucher vorübergehend auf die gewünschte Seite senden (z. B. mit einer Beschreibung, wann die Arbeit abgeschlossen werden soll und wie Sie kontaktiert werden können).

  RewriteEngine an 
RewriteCond% {REQUEST_URI}! /Informpage.html$
RewriteCond% {REMOTE_HOST}! ^ 12 \ .345 \ .678 \ .90
RewriteRule $ http://yoursitename.ru/informpage.html [R = 302, L]
Das Betrachten der Seite wird nur von Ihrer IP-Adresse möglich sein - 12.345.678.90

4. Redirect zu einer anderen Site
Weiterleiten aller Besucher an eine andere Site zusätzlich zu den angegebenen IP-Adressen

  ErrorDocument 403 http://www.yoursitename.ru 
Bestellverweigerung, erlauben
Von allen ablehnen
Zulassen von 12.345.678.90
Zulassen von 12.345.678,92

5. Umleiten zu sicheren https-Verbindungen

  RewriteEngine Ein 
RewriteCond% {https}! On
RewriteRule (. *) Https: //% {HTTP_HOST}% {REQUEST_URI}

Sperren / Blockieren mit .htaccess

Sperren / Blockieren mit .htaccess

1. Verbot der Verzeichnisliste
Es wird verwendet, wenn keine Indexdatei vorhanden ist, wenn Sie das Anzeigen des Inhalts des Ordners (z. B. für Bilder) verhindern möchten:

  Optionen Alle -Indexe 
Reverse-Code, im Sinne der Auflösung
  Optionen + Indizes 

2. Blockieren Sie den Zugriff auf die Datei
Zum Beispiel könnte es Ihr .htaccess sein

  <Dateien .htaccess> 
Reihenfolge erlauben, verweigern
leugne von allem
</ Files>

3. Blockieren des Zugriffs auf das Verzeichnis
Schließen Sie den Zugriff nur auf einen bestimmten Ordner.

  <Verzeichnis / root-Zugriff /> 
Auftrag erlauben zu verweigern
# Alle außer ...
von allen zulassen
Verweigern von 198.69.
</ Directory>
Erlaube den Zugriff nur von einer bestimmten IP auf einen bestimmten Ordner (Adressen werden mit einem Leerzeichen geschrieben):
  # Geben Sie den Ordner an, auf den der Zugriff durch den Hostnamen und seine IP-Adresse verweigert wird 
<Verzeichnis / root-Zugriff />
Bestellverweigerung, erlauben
leugne von allem
# Adressen werden mit einem Leerzeichen geschrieben
Erlauben von 198.69.144.98 198.69.144.94 198.69.144.92
</ Directory>
Es ist auch möglich, in einer Liste sowohl den Hostnamen als auch die IP-Adresse anzugeben:
  # Geben Sie den Ordner an, für den der Zugriff über den Namen und die IP-Adresse verweigert wird 
<Verzeichnis / root-Zugriff />
Auftrag erlauben zu verweigern
# Jeder, ...
von allen zulassen
# ... außer dem Hostnamen und seiner IP
Verweigern von robot.fromx.com 148.145.21.14
</ Directory>

4. Blockierung durch IP
Spammer kümmern sich nicht darum

  <Limit GET> 
Auftrag verweigern, Erlauben
Verweigern von 12.345.678.90
Verweigern von 90.876.543.
Verweigern von .tvoe.tv
Erlaube von allen
</ Limit>
Wird blockiert:
  • Benutzer mit IP 12.345.678.90
  • alle Besucher mit IP fallen in den Bereich von 90.876.543.0 bis 90.876.543.255
  • und alle Besucher vom Anbieter tvoe.tv
Um den Zugriff auf den Site-Ordner zu verweigern, werden die Anweisungen "allow" und "deny" verwendet.
Zugriff von einer bestimmten IP-Adresse verweigern
  # Banned 16:18 03/31/2011 
Auftrag erlauben zu verweigern
von allen zulassen
Verweigern von 198.69.132.24
Schließen Sie den Zugriff auf alle außer bestimmten IP
  Bestellverweigerung, erlauben 
leugne von allem
# IP-Liste mit einem Bereich, von dem aus der Zugriff zulässig ist
Zulassen von 194.111.70.48 194.78.47.128
Sollte es notwendig sein, den Zugang per Maske zu schließen, verwenden wir eine unvollständige Adresse:
  # unvollständige Adresse 
198.69.
# vollständige Adressen entsprechend der ersten
198.69.132.24
198.69.136.89
198.69.1.8
Zugang durch Maske schließen:
  # Gebannt von 06:18 03/31/2011 
Auftrag erlauben zu verweigern
von allen zulassen
Verweigern von 198.69.

CNC-Setup mit .htaccess

Im Allgemeinen, wenn Sie mit WordPress arbeiten, können Sie eine "freundliche" URL im Abschnitt Einstellungen "Permanente Links (CNC)" einrichten. Viele CMS unterstützen auch das Einstellen der Seitenadresse. Wenn also eine Gelegenheit besteht, versuchen Sie zuerst, mit der Funktionalität der Engine auszukommen, und fahren Sie dann mit dem Einrichten von htaccess fort.

CNC-Setup mit .htaccess

1. Wie man von der Adresse entfernt? P =
Standardmäßig sieht die Seitenadresse folgendermaßen aus: yoursitename.ru/?p=xxxx, wobei xxxx die Artikel-ID ist.

  RewriteCond% {REQUEST_URI} ^ / ([0-9] +) $ 
RewriteRule. * Http://yoursitename.ru/?p=%1 [R = 301, L]

2. Wie man die Kategorie von der Adresse entfernt
In Analogie zur vorherigen Methode schreiben wir

  RewriteRule ^ Kategorie /(.+)$ http://yoursitename.ru/$1 [R = 301, L]