SELFHTML: Umleitungen mit mod_rewrite

http://de.selfhtml.org/servercgi/server/rewrite.htm

nach unten Allgemeines - URLs manipulieren mit mod_rewrite
nach unten RewriteBase - Basis für eine Umleitung definieren
nach unten RewriteCond - Bedingung für eine Umleitung definieren
nach unten RewriteEngine - mod_rewrite ein- und ausschalten
nach unten RewriteLog - Log-Datei für mod_rewrite bestimmen
nach unten RewriteLogLevel - Art der Log-Meldungen bestimmen
nach unten RewriteRule - Umleitungen bestimmen

Stupid htaccess Tricks

Direktlinks zu den entsprechenden Kapiteln auf http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/

Stupid htaccess Tricks

Table of Contents


Schnipsel

Doppelten Content vermeiden, der durch die Doppelgleisigkeit bei der URL entsteht:

http://www.user-archiv.de
http://user-archiv.de

Schädlich in Zusammenhang mit  Google

Code:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^user-archiv\.de$ [NC]
RewriteRule ^(.*)$ http://www.user-archiv.de/$1 [R=301,L]

Aussperren bestimmter IPs

Aussperren bestimmter IPs, alle sonstigen dürfen zugreifen (Standardmethode)
Einziger Einleitungssatz: "order allow, deny", danach deny-Befehle für die einzelnen IPs, kein Abschluss notwendig.

oder allow,deny
deny from 111.222.234.
deny from ...
deny from ..

Listen für länderbezogene IP-Sperren

http://blog.chephren.org/post/index/52/Und-nochmal-Spamfighting
In einigen Sonderfällen, d.h. wenn das komplette Netz in einer typischen Region oder einem anderen Sprachbereich liegt, kann man dieses auch großflächig (.../8) ausschließen.


Quelle: http://blog.chephren.org/post/index/52/Und-nochmal-Spamfighting
Dort sind umfangreicherer und  aktualisierte Listen abrufbar.


######################################
# Stand:   22.02.2007 21:21          #
######################################
# geklammerte Kommentare vor Einsatz #
# in der .htaccess bitte entfernen!  #
######################################

Deny from .anonymizationservice.com
Deny from .anon-online.org
Deny from .anonymizer.com
Deny from .anonymouse.ws
Deny from .ourhostingserver.com

Deny from .al
Deny from .am
Deny from .au
Deny from .az
Deny from .ba
Deny from .bg
Deny from .biz
Deny from .by
Deny from .cn
Deny from .cz
Deny from .ee
Deny from .hk
Deny from .hr
Deny from .hu
Deny from .info
Deny from .jp
Deny from .kg
Deny from .kp
Deny from .kr
Deny from .kz
Deny from .lv
Deny from .md
Deny from .mk
Deny from .pl
Deny from .ro
Deny from .ru
Deny from .si
Deny from .sk
Deny from .tj
Deny from .tw
Deny from .ua
Deny from .us
Deny from .uz

Deny from 58.  (Asien)
Deny from 59.  (Asien)
Deny from 60.  (Asien)
Deny from 61.  (Asien)
Deny from 121.  (Asien)
Deny from 122.  (Asien)
Deny from 123.  (Asien)
Deny from 124.  (Asien)
Deny from 125.  (Asien)
Deny from 126.  (Asien)
Deny from 189.  (Lateinamerika)
Deny from 190.  (Lateinamerika)
Deny from 200.  (Lateinamerika)
Deny from 201.  (Lateinamerika)
Deny from 202.  (Asien)
Deny from 203.  (Asien)
Deny from 210.  (Asien)
Deny from 211.  (Asien)
Deny from 218.  (Asien)
Deny from 219.  (Asien)
Deny from 220.  (Asien)
Deny from 221.  (Asien)
Deny from 222.  (Asien)


Download Badword-Liste (Vorlage für internen Spamfilter)
Download IP-Blacklist (Vorlage für .htaccess)

Sperren von User-Agents

Für das Sperren eines bestimmten User-agent ist mod_rewrite erforderlich (wegen REGEX)

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf
RewriteRule ^.*$ - [F]

a) Sperrt den Sammler "EmailWolf", bzw. jeden Agent, der mit EmailWolf... beginnt (ansonsten ^ weglassen)
b) RewriteRule (^.*$) ergibt den HTTP-Rückgabewert 403 (Access denied) - Zugriff verweige

Achtung, die Listen für unerwünschte Spam-Bots sind sehr umfangreich und es ist bekannt, dass die Sperren in der htaccess den Zugriff deutlich verlangsamt.

Apache-Doku zu mod_rewrite

Module mod_rewrite URL Rewriting Engine

(Aktualisiert für Apache 2.2):

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html


Fehlermeldungen abfangen

Fehlermeldungen abfangen und auf eine selbst geschriebene Fehlerseite leiten

In htaccess-Datei einfügen:

ErrorDocument 404 http://www.deinedomain.de/error.htm

= Status-Meldung 404 wird abgefangen und auf die Seite error.htm geleitet.


ErrorDocument 401 http://www.deinedomain.de/error.htm
ErrorDocument 403 http://www.deinedomain.de/error3.htm
ErrorDocument 404 http://www.deinedomain.de/error2.htm
ErrorDocument 405 http://www.deinedomain.de/error.htm
ErrorDocument 500 http://www.deinedomain.de/error.htm

Legende:
401 Nicht autorisierter Zugriff
403 Zugriff nicht erlaubt
404 Seite nicht gefunden
405 Methode nicht erlaubt
500 Interner Server-Fehler

Subdomains einrichten

Aufruf von webworker.meinedomain.de führt zur Umleitung zum Ordner meinedomain.de/webworker

RewriteCond %{HTTP_HOST} webworker.meinedomain.de $ [NC]
RewriteCond %{REQUEST_URI} !/webworker/
RewriteRule ^(.*)$ webworker/$1 [L]

Damit beim Vertippern der Subdomain nicht die Hauptdomain angezeigt wird, wird um folgende Zeilen ergänzt:

RewriteCond %{HTTP_HOST} !(^meinedomain.de $|^www.meinedomain.de $) [NC]
RewriteRule ^\.*$ /error.htm [L]

Redirect

Aufgabe: Ordner umleiten:

RewriteEngine on
Redirect /beispielverzeichnis http://www.user-archiv.de

Aufgabe: einzelne Datei umleiten

RewriteEngine on
Redirect /beispielseite.shtml http://www.user-archiv.de

Aufgabe: ganze domain umleiten

RewriteEngine on
Redirect / http://www.user-archiv.de/


Aufgabe: Umwandlung von seite_12.html auf seite.php?id=12

RewriteEngine on
RewriteRule ^seite_([0-9]+).html$ seite.php?id=$1

Aufgabe: index.html  zu  index.php:

RewriteEngine on
RewriteRule index.html$ index.php

Aufgabe: html-Endungen zu php-Endungen zuweisen
 *beliebig*.html zu *beliebig*.php

2 Lösungmöglichkeiten
a) mit mod_rewrite
b) mit PHP-Parser

#Variante 1
RewriteEngine on
RewriteRule ^(.*).html$ $1.php

# .htm und .html von PHP parsen lassen
AddType application/x-httpd-php .htm .html

Zugriff auf Ordner verhindern

<Directory /home/www/online>
Options FollowSymLinks ExecCGI
Order deny,allow
deny from all
</Directory>

Mod_Rewrite - Flags

Flags für Mod-Rewrite

Flag

Bedeutung

[NC]

Beim Umschreiben der Adresse wird Groß- und Kleinschreibung nicht beachtet.

[R=301]
[R=302]

Die Umleitung erfolgt nicht mehr intern, sondern der Browser bekommt eine Fehlermeldung und wird sichtbar umgeleitet.
301 = dauerhaft verschobene Datei,
302 = die Datei ist nur zeitweise woanders zu finden.

[L]

Dieser Flag bewirkt, dass nach der Ausführung der jeweiligen Regel die Anwendung aller anderen Rewrites, die dahinter notiert sind, abgebrochen wird.

[C]

Nur wenn die Regel, auf die das Flag angewandt wird, zutrifft und auch ausgeführt wird, wird die nächste Zeile mit Rewrites ausgeführt.

[N]

Die eben generierte URL soll von Anfang an noch einmal die Regeln durchlaufen, die in der .htaccess oder  der httpd.conf bestimmt worden sind.

[PT]

Die Adresse durchläuft auch alle standard-mäßigen Alias- und Script-Alias-Regeln und  die Redirect-Anweisungen.

 

Die Variablen der RewriteConditions

Variable

Inhalt
%{HTTP_REFERER} Die auf das Dokument verweisende Seite,  bzw. die Seite, von der aus  Bilder und Scripts eingebunden werden.
%{HTTP_USER_AGENT} Die Kennung des Browsers, mit dem der Client im Web unterwegs ist.
%{QUERY_STRING} Übergebener Text in den Anfragen, oft genutzt durch Formulare mit gesetzter method="get". Entspricht dem  $_GET in PHP.
%{HTTP_HOST} Die DNS / Domain des Servers, an den die Anfrage  abgeschickt wurde.
%{HTTP_COOKIE} Alle Cookies, die der Client auf seinem Rechner zu liegen hat.
%{HTTP_ACCEPT} Die Liste der Mimetypes, die vom Client akzeptiert werden.
%{REMOTE_HOST} Überliefert die Domain des Clients, der die Anfrage sendet.
%{REMOTE_ADDR} Die IP des Clients.
%{SERVER_ADDR} Server-IP.
%{REQUEST_URI} Die komplette URL, die vom Client angefordert wurde.
%{REQUEST_FILENAME} Dateiname zur Anfrage (%{REQUEST_URI}) mit Ordnern und Unterordnern.
%{TIME_DAY} Der Tag des aktuellen Datums.
%{TIME_MON} Aktueller Monat.
%{TIME_YEAR} Enthält das Jahr im Format YYYY
%{TIME_HOUR} Aktuelle Uhrzeit des Tages (Stunden mit evtl. vorangestellter Null)
%{TIME_MIN} Die Minuten
%{TIME_SEC} Minuten und die Sekunden der angelaufenen Minute aufgeführt.
%{ENV:*} Mit dieser Multifunktions-Variable lassen sich fast alle Umgebungsvariablen des Apache auslesen: Von Temp über Path bishin zu SystemRoot. Einfach den Stern * durch die Variable ersetzen.

 

Aus der User-Archiv-Datenbank

Suchbegriff: htaccess
http://blog.kulturbanause.de/2011/03/fremde-ip-adressen-per-htaccess-umleiten/
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.guido-muehlwitz.de/2011/08/wordpress-spam/
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://staticfloat.com/2011/11/01/performance-steigern-unter-apache-mit-htaccess/
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.bitblokes.de/2011/04/apache-genervt-von-hotlinking-oder-image-leeching-mit-htaccess-verhindern/
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.linuxhilfen.org/admin/htaccess.html
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://sw-guide.de/webdesign-und-entwicklung/htaccess-mod_rewrite-fuer-cms-und-blog/
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.horstscheuer.de/archiv.php?suche=php
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.horstscheuer.de/artikel.php/id/409/hackversuche/
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.htaccesseditor.com/en.shtml
Rubrik: Webseiten; Typ: Onlinetools
Über Google in dieser Seite suchen:

http://webdesignblog.de/webdesign/webdesign-guide-modrewrite-und-htaccess/
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.fueralles.de/htaccess-Generator.html
Rubrik: Webseiten; Typ: Onlinetools
Über Google in dieser Seite suchen:

http://www.netzadmin.org/server/apache/apache-htaccess.htm
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.selfphp.de/kochbuch/kochbuch.php?code=76
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://de.selfhtml.org/servercgi/server/rewrite.htm
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.oreilly.de/catalog/webdbapps2ger/chapter/ch11.pdf
Rubrik: Webseiten; Typ: Tutorials
Über Google in dieser Seite suchen:

http://www.ekiwi.de/tools/htaccess/index.php
Rubrik: Webseiten; Typ: Onlinetools
Über Google in dieser Seite suchen:

http://cooletips.de/htaccess/
Rubrik: Webseiten; Typ: Onlinetools
Über Google in dieser Seite suchen:

http://www.webmaster-toolkit.com/htaccess-generator.shtml
Rubrik: Webseiten; Typ: Onlinetools
Über Google in dieser Seite suchen:

http://developers.evrsoft.com/tools-htaccess-generator.shtml
Rubrik: Webseiten; Typ: Onlinetools
Über Google in dieser Seite suchen:

http://userpage.fu-berlin.de/selfhtml/servercgi/server/htaccess.htm
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.yubb.de/section14.html
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://tools.dynamicdrive.com/password/
Rubrik: Webseiten; Typ: Onlinetools
Über Google in dieser Seite suchen:

http://www.phpbb.de/viewtopic.php?t=73948
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.linuxforen.de/forums/showthread.php?t=104717
Rubrik: Betriebssysteme; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.pc-special.net/?idcat=85
Rubrik: Webseiten; Typ: FAQ
Über Google in dieser Seite suchen:

http://faq.winboard.org/index.php?action=artikel&cat=14&id=157&artlang=de
Rubrik: Netzwerk; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://faq.winboard.org/index.php?action=artikel&cat=14&id=202&artlang=de
Rubrik: Netzwerk; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.drweb.de/suchmaschinen/suchmaschinen-urls.shtml
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.drweb.de/htaccess/subdomains.shtml
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.drweb.de/htaccess/htaccess_weiterleitugen.shtml
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://httpd.apache.org/docs-2.0/misc/rewriteguide.html
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.grammiweb.de/anleitungen/ka_htaccess.shtml
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.robert-web.de/htaccess.shtml
Rubrik: Sonstige Themen; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.webwork-magazin.de/magazin/artikel/60
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://cgi.xwolf.de/faq/servercodes.shtml
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:

http://www.geeksworld.de/html/workshops/internet/htaccess/htaccess_1.html
Rubrik: Webseiten; Typ: Sonstige_Literatur
Über Google in dieser Seite suchen:


Mod_Rewrite Cheat-Sheet

Jeweils aktualisiertes Cheat-Sheet (wörtlich Spickzettel oder Merkzettel) auf:

http://www.addedbytes.com/apache/mod_rewrite-cheat-sheet/

Umleitung auf neue domain

#domain.com to domain2.com
RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain2.com/$1 [R=301,L]

.htaccess weiterleitung

Die folgende Nachricht zum Thema stammt von: cangoou, 18. 01. 2005, 09:04

»» die weiterleitung sollte für den besucher unsichtbar sein, diesen weg über .htaccess brauche ich, weil mein provider eine weiterleitung nur mittels frameset möglich macht und das möchte ich vermeiden wenn geht (suchmaschinentechnisch für einen shop und so).
Dann brauchst Du etwas in der Art. Bin kein .htaccess-Freak, aber so ähnlich müßte es gehen:

RewriteCond %{HTTP_HOST} ^www.domain-zum.umleiten.de$ [NC]
RewriteCond %{REQUEST_URI} !^/ordner_hinleitung/ [NC]
RewriteRule (.*) /ordner_hinleitung/$1 [PT]

Eine einfache Lösung für das komplexe Umschreiben von URL (URL-Rewriting)

Die Lösung stammt von XING-Mitglied Horst Frank, zu finden in einem Forums-Thread aus dem Jahre 2007:

https://www.xing.com/net/pri271715x/modrewrite/probleme-losungen-42349/mit-wenigen-rules-zu-gro%C3%9Fer-struktur-3757130/3757130/#3757130

Die einzige Aufgabe in htaccess ist das Auslesen des Strings, den der User als URL eingegeben hatte.

Beispiel:

 

Der HTTP-GET wird ausgelesen und ergibt:
GET /Bestellfahrzeuge/Auto-Marken/Citroen/Berlingo/10005514/info.html
(z.b. www.webworker-archiv.de/Bestellfahrzeuge/....)

$request = $_SERVER["REQUEST_URI"];
$parameters = split("\/",$request);

Die Zuweisung zu den Variablen ist ebenfalls einfach:

$category = $parameters[1];
$subcategory = $parameters[2];
$carbrand = $parameters[3];
$carmodel = $parameters[4];
$typeid = $parameters[5];

------

Nach Ansicht des o.g. Autors habe es sich am besten bewährt, alle Requests in einem zentralen Script (index.php) entgegenzunehmen. Dieses interpretiert die Parameter nach obigem Schema, führt ein zentrales Logging aller eingehenden Requests durch, und ruft intern die benötigte Funktion auf.

Eigene Anmerkung: ich selbst bin noch nicht dazu gekommen, diese simple wie geniale Lösung umzusetzen, weder auf webworker-archiv.de noch anderen Projekten. Gerade aber aufgrund jüngeren Experimenten mit Wordpress denke ich, dass diese Idee dringend verbreitet werden müsste (P. Burkes, Sept 2010)

 

Google-Suche

Google

Geldverdienst mit Webseite