Jörg Reinholz: httpd.conf mod_rewrite GET Parameter

Beitrag lesen

$erlaubte=explode(',', 'com.uk,de,fr,com,pl,it,info'); # woher auch immer

Weshalb nutzt du an dieser Stelle nicht direkt ein Array? Gibt es bei deiner Variante einen Vorteil?

Ja. Es tippt sich schneller. Ist ja klar, dass das nur ein Beispiel ist

Hier ist der Knackpunkt. Muss ich das über PHP machen (oder nochmals prüfen) oder reicht es das mit einer Prüfung schon in der httpd.conf?

Die Prüfung in der httpd.conf ist HYPERLIQUID!

Denn dann würde ich es, um deine RegEx aufzugreifen, folgendermaßen lösen, aber mit ^ außerhalb:

RewriteRule [1].(de|com|co.uk|com.eu) index.php?domainendung=$1

Das liefert nur wenn als Domain sowas wie "A.org" oder "-.com.eu" oder "..com" angegeben wird, sogar dann, wenn "..com.totaler.Blödsinn" übermittelt wird, dann aber ohne das ".totaler.Blödsinn" in $1.

"forum.de.selfhtml.org" würde bei Dir nicht matćhen weil MEHR ALS EIN Buchstabe vor ".de" steht . Selbst wenn Du auf

RewriteRule [2]+.(de|com|co.uk|com.eu) index.php?domainendung=$1

umbauen würdest, dann käme in $1 das falsche "de"!

Steht das "^" am Beginn des regulären Ausdrucks, dann zeigt es an, dass das Folgende ab dem Beginn gesucht werden soll. Innerhalb eckiger Klammern zeigt es an, dass die Klasse negiert wird. Das Ende des zu prüfenden Strings ist übrigens das "$"

Würde also in meinem Beispiel  "w%w.test.com" übermittelt werden, so würde das nicht erlaubt, weil das % durch den regulären Ausdruck [^A-Za-z0-9]/i gefunden wird.

"..com.totaler.Blödsinn" würde in meinem Beispiel aus gleich zwei Gründen rausfliegen. Keine erlaubte TLD und (das wird nicht mehr geprüft) wegen des Umlautes.

Lass den Mist mit den Rewrite-Rules. Die sind nicht dazu gedacht, Funktionen des Programmes zu erfüllen.

Jörg Reinholz


  1. A-Za-z0-9-. ↩︎

  2. A-Za-z0-9-. ↩︎