.htaccess


Was ist Htaccess? Wie funktioniert Htaccess?

  • Mit einer .htaccess-Datei lassen sich Apache-Webserver konfigurieren, beispielsweise für URL-Weiterleitungen oder Zugriffsberechtigungen
  • Eine .htaccess ist nur für den aktuellen Ordner mit seinen Dateien und dessen Unterordner mit deren Dateien gültig
  • Die Regeln innerhalb einer .htaccess werden basierend auf RegEx (Reguläre Ausdrücke) definiert
  • Für Kommentare innerhalb einer .htaccess-Datei nutzt man #
  • Es kann ein Ausrufezeichen ! vor einem Ausdruck stehen, um den Regulären Ausdruck zu negieren

Syntax

  • URLs lassen sich mit dem mod_rewrite Modul umwandeln
  • Das mod_rewrite Modul muss vor Gebrauch in der Htaccess mittels des Befehls RewriteEngine On aktiviert werden
  • Syntax für URL-Rewrites ist →
    RewriteRule URLAuswahl URLAusgabe [OptionaleAnweisung]
  • Optionen für Weitere Anweisungen in RewriteRule:
    redirect oder R → Statuscode für Weiterleitung (Standardmässig steht dieser bei Apache auf 302)
    forbidden oder F → Statuscode 403
    gone oder G → Statuscode 410
    last oder L → Nach einer RewriteRule keine weitere mehr ausführen
    next oder N → Abarbeitung der RewriteRule-Direktiven wird abgebrochen und nochmals gestartet
    chain oder C → Nächste RewriteRule nur ausgewerten, falls die aktuelle Regel zutrifft
    type= oder T= → Mit dieser Option lässt sich ein bestimmter MIME-Type bestimmen
    nosubreq oder NS → Regel überspringen, falls der aktuelle Request ein Sub-Request ist
    nocase oder NC → Bei der Überprüfung auf Gleichheit des Ausdrucks und der URL nicht auf Groß- und Kleinschreibung achten
    qsappend oder QSA → An die Umleitung manuell einen neuen Query-String hängen und den alten dabei nicht komplett ersetzen
    noescape oder NE → Sonderzeichen von mod_rewrite nicht maskieren lassen
    skip=N oder S=N → Die nächsten N RewriteRule-Direktiven überspringen
    env=VAR:VAL oder E=VAR:VAL → Eine Umgebungsvariable erzeugen, hier z.B. die Variable VAR mit dem Wert VAL
    cookie=NAME:VAL:domain [:lifetime[:path]] oder CO= → Setze Cookie namens NAME mit dem Wert VAL und Domain als domain, lifetime (Lebenszeit in Minuten) und path (Pfad des Cookies) sind optional
    proxy oder P → Zugriff von dem Apache-Modul mod_proxy aus auf die URL. Dazu muss mod_proxy aktiviert und die URL valide sein
    passthrough oder PT → Mehrere URL->Dateinamen-Übersetzer (wie etwa mod_alias und mod_rewrite) zusammen benutzen
    passthrough oder PT → Mehrere URL->Dateinamen-Übersetzer (wie etwa mod_alias und mod_rewrite) zusammen benutzen
  • Zusätzliche Angaben:
    RewriteBase → Gibt das Wurzelverzeichnis an
    RewriteCond → Legt fest, wann und ob eine Regel greifen soll. Mit %{REQUEST_FILENAME} wird darin eine vorgegebene Serverkonstante (die aufgerufene Datei) angesprochen
    Options +FollowSymlinks → „Symbolische Links“ im Webserver einstellen

URLs umwandeln: Beispiele

  • Beispiel: /index.html → /:
    RewriteEngine On
    RewriteCond %{THE_REQUEST} index\.html [NC]
    RewriteRule (.*)index\.html http://MeineDomain.de$1 [NC,R=301]
  • Beispiel: /index.html und /index.php → /:
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(html?|php)\ HTTP/
    RewriteRule ^index\.(html?|php)$ http://www.MeineDomain.de/ [R=301,L]
  • Beispiel: .html → .php:
    RewriteBase /
    RewriteRule ^(.*).html$ $1.php [R=301, L]
  • Beispiel: ohne www. → www.:
    RewriteCond %{HTTP_HOST} !^www\.domain\.de$ [NC]
    RewriteRule ^(.*)$ http://www.domain.de/$1 [L,R=301]
  • Beispiel: www. → ohne www.:
    RewriteCond %{HTTP_HOST} ^www.domain.de [NC]
    RewriteRule ^(.*)$ http://domain.de/$1 [L,R=301]
  • Beispiel: Alle Dateien des Verzeichnisses /produkte/ → /produkte.php, ausser /produkte/separat.php:
    RewriteRule ^produkte/separat.php /separat.html [L,R=301]
    RewriteRule ^produkte(.*)$ /produkte.php [L,R=301]
  • Beispiel: /article.jsp?id=8932 → /neueste-nachrichten.htm:
    RewriteRule ^article.jsp?id=(.*)$ /neueste-nachrichten.htm [L,R=301]
  • Beispiel: /category/category-name → /category-name:
    RewriteRule ^category/(.+)$ http://www.domain.de/$1 [R=301,L]
  • Beispiel: /ordner1/de/ordner2/index.php → /keyword-ordner/keyword.html:
    RewriteCond %{REQUEST_URI} keyword-ordner/keyword.html$
    RewriteRule (.*) ordner1/de/ordner2/index.php

Einzelne URLs weiterleiten: Syntax & Beispiel

Syntax für 301 URL-Weiterleitungen ist::
Redirect 301 AlteRelativeURL NeueAbsoluteURL
Allternative Schreibweise:
Redirect permanent AlteRelativeURL NeueAbsoluteURL
Beispiel::
Redirect 301 /a.php http://www.meinedomain.de/b.php


404 Fehlerseite: Syntax & Beispiel

Syntax für die Angabe der 404 Fehlerseite::
ErrorDocument 404 URLzurFehlerseite
Beispiel::
ErrorDocument 404 /404.php


X-Robots-Tag: Syntax & Beispiel

Syntax für das X-Robots-Tag::
X-Robots-Tag: DieAnweisung
Beispiel::
X-Robots-Tag: googlebot: nofollow
X-Robots-Tag: otherbot: noindex, nofollow

Hier erfährst du mehr zum Thema X-Robots-Tag.


(Aus) Sperren: Syntax & Beispiele

Syntax für das Aussperren:
SetEnvIf Was Wer Wert (Nur wenn Wert-Variablen genutzt werden sollen)
Order allow, deny
Allow from
Deny from

Beispiel: Alle IE Nutzer aussperren:
SetEnvIf User-Agent MSIE WegHier
Order allow,deny
Allow from all
Deny from env=WegHier

Alternative über mod_rewrite::
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} MSIE
RewriteRule ^ - [F]

Beispiel: Alle IE 6 Nutzer aussperren:
SetEnvIf User-Agent "MSIE 6" WegHier
Order allow,deny
Allow from all
Deny from env=WegHier

Beispiel: Googlebot aussperren:
SetEnvIf User-Agent googlebot WegHier
Order allow,deny
Allow from all
Deny from env=WegHier

Beispiel: Website aussperren:
SetEnvIf Referer "http://www.weghier.de" WegHier
Order allow,deny
Allow from all
Deny from env=WegHier

Alternative über mod_rewrite::
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://weghier.de/ [NC]
RewriteRule ^ - [F]

Beispiel: domain.de, traffic.website.com und IPs beginnend mit 192.168 aussperren
order deny, allow
deny from .domain.de
deny from traffic.website.com
deny from 192.168
allow from all

Beispiel: Eigene .htaccess sperren
<Files .htaccess>
order allow,deny
deny from all
</Files>

Beispiel: Dateien mit Endung .tpl, .ini, .htaccess sperren
<FilesMatch "\.(tpl|ini|htaccess)$">
order allow,deny
deny from all
</FilesMatch>


Startdatei als Startseite

Syntax:
DirectoryIndex DieStartDatei
Beispiel: index.html als Startdatei
DirectoryIndex index.html


Expires Header verwenden

Expires Header erzwingen das Caching für einen bestimmten Zeitraum

Beispiel: Default auf 1 Tag, einzelne Dateitypen auf x
(Statt seconds kann auch hour, week, month, etc. gewählt werden)

ExpiresActive on
ExpiresDefault "access plus 86400 seconds"
ExpiresByType image/gif "access plus x seconds"
ExpiresByType image/jpeg "access plus x seconds"
ExpiresByType image/png "access plus x seconds"
ExpiresByType image/x-icon "access plus x seconds"
ExpiresByType text/css "access plus x seconds"
ExpiresByType application/javascript "access plus x seconds"
ExpiresByType application/x-javascript "access plus x seconds"
ExpiresByType application/pdf "access plus x seconds"
ExpiresByType text/plain "access plus x seconds"


Gzip aktivieren

Per Gzip lassen sich Dateien auf dem Server komprimieren.
Klappt aber nur, wenn das Apache-Modul mod_gzip installiert ist.
Beispiel:

mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*

Falls das Modul nicht auf dem Server installiert ist, kann alternativ PHP die Arbeit übernehmen. Diese Variante frisst allerdings auch mehr CPU.
php_value output_handler ob_gzhandler


Hilfreiche Tools

  • Simple 301 Redirect: WordPress Plugin zum einfachen Anlegen von 301 Redirects in der Htaccess

Besucher dieser Seite suchten auch nach:
htaccess, htaccess redirect, htpasswd, wordpress htaccess, 301 redirect htaccess, mod_rewrite, htaccess file, htaccess redirect to https, htaccess generator, htaccess rewriterule, htaccess password, htaccess rewrite, apache htaccess, htaccess rewrite url, htaccess php, htaccess redirect url, htaccess tester, rewriteengine on, htaccess example, wordpress htaccess file, htaccess redirect to www, htaccess https, htaccess tutorial, create htaccess file, htaccess 301, htaccess redirect generator, htaccess options, htaccess directoryindex, htaccess redirect domain, apache htpasswd, htaccess mod_rewrite, htaccess rewritecond, htaccess location, htaccess file example, http to https htaccess, htaccess rewrite generator, htaccess options indexes, create htpasswd, htaccess permissions, apache2 htaccess, https htaccess, htaccess index, create htaccess, htaccess allowoverride, htaccess nc, htaccess checker, htaccess directory, htaccess file generator, htaccess editor, htaccess deny, htaccess allow from, htaccess www, wordpress htaccess redirect, htaccess rewriteengine, apache htaccess not working, htpasswd example, apache allow htaccess, htpasswd file, htaccess windows, htaccess html, wordpress htaccess location, enable htaccess apache, htaccess rules, htaccess rewriterule generator, htaccess linux, htaccess syntax, apache2 enable htaccess, htaccess sample, apache htaccess redirect, htaccess url, apache htaccess location, htaccess protect folder, htaccess online, htaccess rewrite condition, htaccess file permissions, htaccess include, htaccess htpasswd generator, php htpasswd, htaccess redirect to url, apache htpasswd generator, php ini htaccess, htaccess apache 2.4, htacces wordpress, htaccess how to, htaccess redirect wordpress, htaccess protection, linux htpasswd, htaccess redirect ip, apache htaccess password, htaccess template, https htaccess redirect, htpasswd encryption, htaccess php error, htaccess forward, htaccess php value, htpasswd wordpress, htaccess generator redirect, apache use htaccess, htpasswd password, php htaccess login, htaccess performance, apache activate htaccess, htpasswd generator windows, htaccess für wordpress, htaccess login php, htaccess generator download, wordpress htaccess standard, htaccess generator php, wie htaccess erstellen, wie .htaccess aktivieren, htaccess wie sicher, htaccess wie funktioniert, htaccess wie öffnen, wie sicher ist htaccesspasswortschutz, wie sieht eine htaccess datei aus, wie muss eine .htaccess datei aussehen, wie funktioniert eine htaccess datei, wie erstellt man htaccess-datei, htaccess was ist das, .htaccess was not found, htaccess was not closed, was heißt htaccess, was muss in .htaccess stehen, was muss in .htaccess stehen wordpress, htaccess was not found on this server, wo htaccess ablegen, wo htaccess, wo .htaccess wordpress, .htaccess wo finde ich, .htaccess wo finde ich diese datei, htaccess wo einfügen, wo liegt .htaccess wordpress, wo muss htaccess liegen, wo finde ich .htaccess wordpress, wo ist die htaccess datei, warum .htaccess