Ich versuche, eine bestimmte URL so einzuschränken, dass sie außerhalb des Netzwerks nur für bestimmte IP-Adressen verfügbar ist. Wenn ein Benutzer außerhalb versucht, auf diese URL zuzugreifen, und nicht über die IP-Liste, sollte er auf die Homepage umgeleitet werden.
Dies ist, was ich bisher ohne Glück versucht habe. Der letzte Teil leitet jeden zur Homepage weiter, unabhängig von der IP-Adresse.
<Location "/secret">
# <If "%{REMOTE_ADDR} != -ipmatch '123.123.123.123/255.255.255.255'">
# Redirect 303 "/secret" /
# </If>
RewriteCond "%{REMOTE_ADDR}" "!123\.123\.123\.123"
RewriteRule .* / [R,L]
LogLevel debug rewrite:trace6
</Location>
PS: Die / secret-URL ist tatsächlich eine virtuelle URL und existiert physisch nicht auf dem Laufwerk.
ip
apache-2.4
301-redirect
restriction
Denis Rendler
quelle
quelle
RewriteEngine On
?Antworten:
Verwenden Sie
Order
,Deny
undallow
festlegen , wer Zugriff auf Ihre vHost oder Lage.Denken Sie beim Umleiten an eine benutzerdefinierte Fehlerseite . Dies ist viel allgemeiner, da jeder nicht autorisierte Zugriff einen 403-Fehler hervorrufen sollte und somit leicht ausgewertet werden kann.
Ich habe das nie mit Apache gemacht, sondern diese Strategie mit Nginx. Für Apache sollte so etwas tun:
quelle
ErrorDocument
Teil stammt aus den 2.4-Dokumenten. Ich glaube nicht , Apache zu verwenden, da nginx um ist, aber angenommen , dassOrder
,Deny
undAllow
sind immer noch rund in Apache 2.4Die Optionen Order, Deny und Allow wurden in Apache 2.4 durch ersetzt
Sie können Adressen explizit einschränken, indem Sie Folgendes verwenden:
Das genaue Gegenteil ist der Fall, um alle einzuschränken und nur eine Teilmenge zuzulassen, verwenden Sie Folgendes:
Weitere Informationen finden Sie in der Dokumentation zur Apache 2.4-Zugriffssteuerung.
In Bezug auf Ihre Frage (die ich aufgrund fehlender Punkte zum Hinzufügen eines Kommentars selbst bearbeitet habe) sollten Sie in der Lage sein, einfach ein ErrorDocument mit dem Index als URL-Pfad festzulegen:
Hoffe das hilft!
quelle
allow
obwohl veraltet,Require 127.0.0.1
den Zugriff über eine externe Adresse von einem lokalen Computer aus zulassen müssen, wobei als Erlaubnissyntax nur Adressen von 127 zugelassen werden.Für Apache 2.4 können Sie <RequireAny> verwenden. Sie können dies in einer vhost- oder einer .htaccess-Datei tun.
Apache-Dokumente https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#requireany
quelle