htaccess Weiterleitung
Manuelw
- programmiertechnik
Hallo!
Ich arbeite gerade an meiner Website und habe jetzt eine Frage an Euch.
Auf dem Webserver habe ich eine .htaccess Datei mit der ich bestimmten IP- Adressen den Zugriff auf mein Webverzeichnis verweigere.
Die Datei sieht so aus:
order allow,deny
deny from ***.***.***.***
allow from all
Kann man diese Datei irgendwie umschreiben, damit die blockierten IP- Adressen auf eine andere Seite, in meinem Fall eine von mir erstelle Error Seite, umgeleitet werden?
Liebe Grüße,
Manuel
Hallo Manuel,
Kann man diese Datei irgendwie umschreiben, damit die blockierten IP- Adressen auf eine andere Seite, in meinem Fall eine von mir erstelle Error Seite, umgeleitet werden?
ja. mod_rewrite wäre dafür geeignet. Mittels RewriteCond kannst Du unter Zuhilfenahme der Variabel %{REMOTE_ADDR} und eines Regulären Ausdrucks die IP-Adressen filtern und durch RewriteRule gegebenenfalls umleiten lassen.
Gruß aus Berlin!
eddi
Hallo Eddi!
Und wie würde dass dann in etwa aussehen?
Hab zwar von mod_rewrite schon gehört nur kenne ich mich damit leider nicht aus.
Liebe Grüße,
Manuel
Re:
Und wie würde dass dann in etwa aussehen?
Hab zwar von mod_rewrite schon gehört nur kenne ich mich damit leider nicht aus.
Bitte sei so lieb und lies erstmal die Dokumentation des Moduls auf das ich Dich verwies! Es hilft Dir nicht weiter, wenn ich Dir hier etwas hinsetze, was im Ergebnis dann vielleicht auch Deinen Erwartungen entspricht. Nur Verständnis durch eigenes Ausprobieren anhand der in der Dokumentation aufgeführten Beispiele bringt Dich hier weiter, weil Du auch in ähnlichen, zukünftigen Situationen SELBST Lösungen finden kannst.
Gruß aus Berlin!
eddi
hi,
Und wie würde dass dann in etwa aussehen?
Eine Fehlerseite könnte so aussehen:
.htacces
ErrorDocument 403 /index.php?internal_path=error
PHP
/* Fehlerstatus und meldungen hier rein */
$errormsg = array(
'403' => array('status' => '403 Forbidden'
,'content' => 'Die von dir angeforderte Ressource darf nicht angezeigt werden.')
);
/**
* Einfacher Error-Handler
*/
function fetch_error ($_err,&$_msg) {
// Wenn der übergebene Errorstatus im array nicht existiert
if(!array_key_exists($_err, $_msg))
return array('headline' => 'Fehler- oder Statuscode nicht bekannt');
// Ansonsten header setzen und array zurückgeben
header('HTTP/1.1 ' . $_msg[$_err]['status']);
return array('headline' => $_msg[$_err]['status']
,'content' => $_msg[$_err]['content']
);
}
Aufruf (Error 403 erzwingen oder zum testen auf 404 umschreiben):
if (isset($_GET['internal_path']) AND $_GET['internal_path'] == 'error')
var_dump( fetch_error($_SERVER['REDIRECT_STATUS'], $errormsg) );
mfg
…in meinem Fall eine von mir erstelle Error Seite…
Nochmals darüber nachgedacht, könnte sich auch eine andere Möglichkeit als praktikable erweisen. Der Server antwortet ja bei den entsprechenden IP-Adresen mit HTTP-Status "403 Forbidden". Dies tut dieser zwar auch unter anderen Umständen, jedoch könnte auch ein eingenes ErrorDocument ausreichen.
Gruß aus Berlin!
eddi