Próbuję ograniczyć konkretny adres URL, aby był dostępny poza siecią tylko do określonych adresów IP. Gdy użytkownik na zewnątrz próbuje uzyskać dostęp do tego adresu URL, a nie z listy adresów IP, powinien zostać przekierowany na stronę główną.
Właśnie tego próbowałem dotychczas bez powodzenia. Ostatnia część przekierowuje wszystkich na stronę główną bez względu na adres IP.
<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: / tajny adres URL jest w rzeczywistości wirtualnym adresem URL i nie istnieje fizycznie na dysku.
ip
apache-2.4
301-redirect
restriction
Denis Rendler
źródło
źródło
RewriteEngine On
?Odpowiedzi:
Używać
Order
,Deny
iallow
określić, kto ma dostęp do swojego vhost lub lokalizacji.Jeśli chodzi o przekierowanie, pomyśl o niestandardowej stronie błędu . Jest to o wiele bardziej ogólne, ponieważ każdy nieautoryzowany dostęp powinien powodować błąd 403 i dlatego może być łatwo oceniony.
Nigdy nie robiłem tego z Apache, ale używam tej strategii z Nginx. W przypadku apache coś takiego powinno zrobić:
źródło
ErrorDocument
część pochodzi z dokumentów 2.4. Nie używam apache, nginx, ponieważ jest dookoła, ale zakłada się, żeOrder
,Deny
iAllow
nadal są wokół w apache 2.4Opcje Kolejności, Odmów i Zezwól zostały zastąpione w Apache 2.4 przez
Możesz jawnie ograniczyć adresy, używając następujących elementów:
Jest też dokładnie odwrotne, aby ograniczyć wszystko i pozwolić tylko podzestawowi użyć następujących elementów:
Więcej informacji jest dostępnych w dokumentacji kontroli dostępu Apache 2.4.
W odniesieniu do twojego pytania (edytowanego przeze mnie z powodu braku punktów do dodania komentarza) powinieneś być w stanie po prostu ustawić ErrorDocument z indeksem ustawionym jako ścieżka URL:
Mam nadzieję że to pomoże!
źródło
allow
choć przestarzałe,Require 127.0.0.1
nadal zezwalaj na dostęp przez zewnętrzny adres z komputera lokalnego, gdzie jako zezwól na składnię zezwól tylko z adresu 127.W przypadku Apache 2.4 możesz użyć <RequireAny>. Możesz to zrobić w pliku vhost lub pliku .htaccess ....
Dokumentacja Apache https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#requireany
źródło