Seite 1 von 1

weiterleiten und verbieten bei .htaccess

Verfasst: 04.12.2007, 10:37
von hagifreaky
Hallo Leutz,

Habe ein problem. Ich hab es bisher nicht hinbekommen..
Es geht um folgendes:
Ich habe eine index.html und eine index2.html
Beim aufruf der seite wird die normale index.html aufgerufen. Für alle bis auf die leute die ich sperren will.
Ich möchte user sperren mit dem ip bereich : xxx.xxx.xxx.xxx - xxx.xxx.xxx. die sollen automatisch auf index2.html kommen. Wie mach ich das?
also sperren ist nicht das problem .

sollte so funktionieren:

Order deny,allow
Deny from xx.xx.
Deny from yy.yy.

#wie mach ich das, dass die leutz die gesperrt sind aber weiter geleitet werden auf index2.html ? oder von mir aus zu google geleitet werden ? ohne das die dämlich meldung kommt .. 404 error zugriff verweigert
weiß jemand wie genau die .htaccess datei aussehen muss? :roll:

Verfasst:
von

Verfasst: 04.12.2007, 13:05
von matin
bin mir grad nicht sicher, ob das mit mod_rewrite geht. ansonsten würde ich es mit php machen ...

Verfasst: 04.12.2007, 15:35
von rg1
Eins von beiden geht nur, entweder weiterleiten oder verbieten.
Besser du leitest mit per Apache-Modul weiter, als eine lahmarschige Scriptsprache zu bemühen, wenn es geht. Probiere mal das hier:

Code: Alles auswählen

#mod_rewrite
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^xx\.xx\.[0-255]\.([0-255]) 
RewriteCond %{THE_REQUEST} index\.html [NC]
RewriteRule (.*)index\.html /index2.html [R=301,L]
#ungetestet

Verfasst: 04.12.2007, 16:11
von hagifreaky
ja, weiterleiten oder sperren.. kann man das aber nicht zu den einzelnen html seiten zuweisen ? also ich sage mal index.html ist gesperrt und index2.html ist aufrufbar und wird wenn index.html nicht aufrufbar ist index2.html gestartet ?

der script:
#mod_rewrite
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^xx\.xx\.[0-255]\.([0-255])
RewriteCond %{THE_REQUEST} index\.html [NC]
RewriteRule (.*)index\.html /index2.html [R=301,L]
#ungetestet


funktioniert bei mir nicht

Verfasst: 04.12.2007, 16:22
von rg1
Wenn du für Besucher aus einem bestimmten IP-Bereich Anfragen nach index.html auf index2.html permanent weiterleitest, dürfte das genau der richtige Weg sein. So verstehe ich jedenfalls deine Beschreibung.
hagifreaky hat geschrieben:der script...funktioniert bei mir nicht
kannst du etwas ausführlicher werden? Vielleicht habe ich ja Lust, eine Lösung zu finden...

Verfasst: 04.12.2007, 16:48
von hagifreaky
ich habe eine index.html eine index2.html und eine .htaccess. so ist der aufbau bei mir.. Das ganze läuft mit xampp (apache) auf einem windows server. die .htacces habe ich geöffnet und alles so eingetragen:

order allow,deny
allow from all
deny from 92.72.0.0/13
deny from 92.80.0.0/32
deny from 92.224.0.0/13
deny from 92.232.0.0/32
deny from 92.192.0.0/11
deny from 92.224.0.0/32
deny from 92.116.0.0/15
deny from 92.118.0.0/32
deny from 91.96.0.0/15
deny from 91.98.0.0/32
deny from 91.90.96.0/21
deny from 91.90.104.0/32
deny from 91.90.144.0/20
deny from 91.90.160.0/32
deny from 91.89.0.0/16
deny from 91.90.0.0/32
deny from 91.64.0.0/14
#mod_rewrite
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^xx\.xx\.[0-255]\.([0-255])
RewriteCond %{THE_REQUEST} index\.html [NC]
RewriteRule (.*)index\.html /index2.html [R=301,L]
#ungetestet

das war der erste versuch.. der ging nicht dann hab ichs einfach mal ohne den ganzen deny schnickschnack da du ja sagtest entweder sperren oder weiterleiten.. das hab ichs so versucht in der .htacces:

#mod_rewrite
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^xx\.xx\.[0-255]\.([0-255])
RewriteCond %{THE_REQUEST} index\.html [NC]
RewriteRule (.*)index\.html /index2.html [R=301,L]
#ungetestet

was könnt ich noch machen ? :-?

Verfasst: 04.12.2007, 17:23
von rg1
Bereits mit mod_access ausgesperrte IP-Bereiche können nicht mehr mit mod_rewrite weitergeleitet werden.
Natürlich war 'xx.xx' nur ein Platzhalter.
Mit der CIDR-Notation habe ich leider nix am Hut, ich hoffe, du kannst das entsprechend anpassen.

Code: Alles auswählen

RewriteEngine On
# Kommt die Anfrage aus einer der folgenden IP-Bereiche?
RewriteCond %{REMOTE_ADDR} ^92\.72\.0\. [OR] 
RewriteCond %{REMOTE_ADDR} ^92\.80\.0\. [OR] 
RewriteCond %{REMOTE_ADDR} ^92\.224\.0\. [OR] 
RewriteCond %{REMOTE_ADDR} ^92\.232\.0\. [OR] 
RewriteCond %{REMOTE_ADDR} ^92\.192\.0\. [OR] 
RewriteCond %{REMOTE_ADDR} ^92\.224\.0\. [OR] 
RewriteCond %{REMOTE_ADDR} ^92\.116\.0\. [OR] 
RewriteCond %{REMOTE_ADDR} ^92\.118\.0\. [OR] 
RewriteCond %{REMOTE_ADDR} ^91\.96\.0\. [OR] 
RewriteCond %{REMOTE_ADDR} ^91\.98\.0\. [OR] 
RewriteCond %{REMOTE_ADDR} ^91\.90\.96\. [OR] 
# usw. usf.
RewriteCond %{REMOTE_ADDR} ^91\.64\.0\.
# UND wird index.html angefordert?
RewriteCond %{THE_REQUEST} index\.html [NC]
# DANN erfolgt die Weiterleitung auf index2.html
RewriteRule (.*)index\.html /index2.html [R=301,L] 
In dieser Form sollte es klappen, wenn ein Syntaxfehler drin steckt, schlägt das gleich mit einem 500-Fehlercode zu Buche. Die IP-Bereiche sind noch anzupassen.

Verfasst: 04.12.2007, 17:51
von hagifreaky
Danke für die hilfe :D

hab das jetzt soweit :

RewriteEngine on
RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^92.72.0.0/13 [OR]
RewriteCond %{REMOTE_ADDR} ^92.80.0.0/32 [OR]
RewriteCond %{REMOTE_ADDR} ^92.224.0.0/13 [OR]
RewriteCond %{REMOTE_ADDR} ^92.232.0.0/32 [OR]
RewriteCond %{REMOTE_ADDR} ^92.192.0.0/11 [OR]
RewriteCond %{REMOTE_ADDR} ^92.224.0.0/32 [OR]
RewriteCond %{REMOTE_ADDR} ^92.116.0.0/15 [OR]
RewriteCond %{REMOTE_ADDR} ^92.118.0.0/32 [OR]
RewriteCond %{REMOTE_ADDR} ^91.96.0.0/15 [OR]
RewriteCond %{REMOTE_ADDR} ^91.98.0.0/32 [OR]
RewriteCond %{REMOTE_ADDR} ^91.90.96.0/21 [OR]
RewriteCond %{REMOTE_ADDR} ^91.90.104.0/32 [OR]
RewriteCond %{REMOTE_ADDR} ^91.90.144.0/20 [OR]
RewriteCond %{REMOTE_ADDR} ^91.90.160.0/32 [OR]
RewriteCond %{REMOTE_ADDR} ^91.89.0.0/16 [OR]
RewriteCond %{REMOTE_ADDR} ^91.90.0.0/32 [OR]
RewriteCond %{REMOTE_ADDR} ^91.64.0.0/1
RewriteRule ^.*$ index2.html[L]

aber irgendwo ist ein fehler drin.. bekomme die error 500 seite. hmm ..

Verfasst: 04.12.2007, 18:20
von rg1
in der mod_rewrite-Syntax ist ein Punkt ein beliebiges Zeichen. Das Zeichen 'Punkt' muss in der IP-Adresse also maskiert werden.
92\.72\.0\. statt 92.72.0.

Zudem kann man offenbar keine CIDR-Notation verwenden, d.h. aus 92.72.0.0/13 wird 92.72.0.1 bis 92.79.255.255, wenn ich mich nicht verrechnet habe.
Daraus folgt:

Code: Alles auswählen

# 92.72.0.0/13
RewriteCond %{REMOTE_ADDR} ^92\.[72-79]\.[0-255]\.([1-255]) [OR]
# usw. usf.
# 91.64.0.0/14
RewriteCond %{REMOTE_ADDR} ^91\.[64-67]\.[0-255]\.([1-255])
# UND wird index.html angefordert?
RewriteCond %{THE_REQUEST} index\.html [NC]
# DANN erfolgt die Weiterleitung auf index2.html
RewriteRule (.*)index\.html /index2.html [R=301,L]

Verfasst: 04.12.2007, 18:32
von hagifreaky
HILFE !! bitte auf deutsch nochmal :o
also wo ist ein punkt falsch oder muss eingesetzt werden in meiner .htaccess ?

RewriteEngine on
RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^92.72.0.0/13 [OR]
RewriteCond %{REMOTE_ADDR} ^92.80.0.0/32 [OR]
RewriteCond %{REMOTE_ADDR} ^92.224.0.0/13 [OR]
RewriteCond %{REMOTE_ADDR} ^92.232.0.0/32 [OR]
RewriteCond %{REMOTE_ADDR} ^92.192.0.0/11 [OR]
RewriteCond %{REMOTE_ADDR} ^92.224.0.0/32 [OR]
RewriteCond %{REMOTE_ADDR} ^92.116.0.0/15 [OR]
RewriteCond %{REMOTE_ADDR} ^92.118.0.0/32 [OR]
RewriteCond %{REMOTE_ADDR} ^91.96.0.0/15 [OR]
RewriteCond %{REMOTE_ADDR} ^91.98.0.0/32 [OR]
RewriteCond %{REMOTE_ADDR} ^91.90.96.0/21 [OR]
RewriteCond %{REMOTE_ADDR} ^91.90.104.0/32 [OR]
RewriteCond %{REMOTE_ADDR} ^91.90.144.0/20 [OR]
RewriteCond %{REMOTE_ADDR} ^91.90.160.0/32 [OR]
RewriteCond %{REMOTE_ADDR} ^91.89.0.0/16 [OR]
RewriteCond %{REMOTE_ADDR} ^91.90.0.0/32 [OR]
RewriteCond %{REMOTE_ADDR} ^91.64.0.0/1
RewriteRule ^.*$ index2.html[L]


ich weiß das du das irgendwie anders gemacht hast, aber in google hab ich eine eite gefunden die das so beschreibt. gehts aber nicht.. also denk ich mal du hast recht :D Aber was genau muss ich jetzt ändern ? wo muss ein punkt rein =?

RewriteEngine on
RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^92.72.0.0/13 [OR] soll dann so heißen ?

RewriteEngine on
RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^92\.72\.0\. [OR]
RewriteCond %{REMOTE_ADDR} ^92\.80\.0\. [OR]
RewriteCond %{REMOTE_ADDR} ^92\.224\.0\. [OR]
RewriteCond %{REMOTE_ADDR} ^92\.232\.0\. [OR]
... und so weiter ..

Meintest du das so ? fehlt da nochwas?

Verfasst: 04.12.2007, 18:50
von rg1
Ich gebe zu, das ist schon vertrackt.

Aus

Code: Alles auswählen

RewriteCond %{REMOTE_ADDR} ^92.72.0.0/13 [OR] 
wird

Code: Alles auswählen

RewriteCond %{REMOTE_ADDR} ^92\.[72-79]\.[0-255]\.[1-255] [OR] 
Aus

Code: Alles auswählen

RewriteCond %{REMOTE_ADDR} ^92.80.0.0/32 [OR] 
wird

Code: Alles auswählen

RewriteCond %{REMOTE_ADDR} ^92\.80\.0\.0 [OR] 
Die IP-Bereiche müssen eine nach der anderen von CIDR-Notation in IPv4-Notation umgewandelt werden. Wie gesagt bin ich darin nicht sonderlich bewandert. Ich hoffe, hier hängt sich gleich noch jemand mit rein, ich bewege mich langsam auf dünnem Eis. ;)