Próbuję odmówić wszystkim i zezwolić tylko na jeden adres IP. Ale chciałbym, aby następujący htaccess działał dla tego pojedynczego adresu IP. Nie znajduję sposobu, aby oba działały: odmów wszystkich i zezwalaj tylko na jedną, a także następujące opcje:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#When your application folder isn't in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Fabdrol
#Rename 'application' to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin
ErrorDocument 404 /index.php
</IfModule>
Czy jest sposób, aby to zadziałało?
allow from yourIPv6
Wiem, że to pytanie ma już zaakceptowaną odpowiedź, ale dokumentacja Apache mówi:
Tak więc bardziej przyszłościowa odpowiedź brzmiałaby:
Mam nadzieję, że pomogłem zapobiec temu, by ta strona stała się jednym z tych „przestarzałych samouczków”. :)
źródło
Require ip
w wielu wierszach, aby były bardziej czytelne dla użytkownika, czy też wszystkie adresy IP muszą znajdować się w jednym wierszu?Można to poprawić, używając dyrektywy zaprojektowanej do tego zadania.
Gdzie 111.222.333.444 to Twój statyczny adres IP.
W przypadku korzystania z dyrektywy „Order Allow, Deny” żądania muszą być zgodne z wartością Allow lub Deny. Jeśli żadna z nich nie jest spełniona, żądanie jest odrzucane.
http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order
źródło
Nieznacznie zmodyfikowana wersja powyższego, w tym niestandardowa strona do wyświetlenia osobom, którym odmówiono dostępu:
... i w ten sposób żądania, które nie pochodzą z adresu 111.222.333.444, zostaną wyświetlone pod adresem specific_page.html
(opublikowanie tego jako komentarza wyglądało okropnie, ponieważ nowe linie się zgubiły)
źródło
test.html
i znajduje się w tym samym folderze co plik.htaccess
. Jednak nie widzę logów (niedozwolone z serwera). Czy masz pojęcie, dlaczego mogę mieć ten problem? Kiedy otrzymuję ścieżkę do pliku przez klienta ftp, mówi mi/test.html
, że ścieżka nie powinna stanowić problemu, prawda?Ulepszając nieco poprzednie odpowiedzi, można wyświetlać użytkownikom stronę konserwacji podczas wprowadzania zmian w witrynie:
Gdzie:
#.#.#.#
czy twój adres IP: jaki jest mój adres IP?maintenance.html
jest tutaj przykładem ładny: Prosta konserwacja Pageźródło
Oprócz odpowiedzi @Davida Browna, jeśli chcesz zablokować adres IP, musisz najpierw zezwolić na wszystko, a następnie zablokować adresy IP jako takie:
Możesz użyć dowolnej z wyżej wymienionych notacji, aby dopasować ją do potrzeb CIDR.
źródło
W htaccess możesz użyć następujących opcji, aby zezwolić lub odmówić dostępu do swojej witryny:
Najpierw ustawiamy zmienną env allowedip, jeśli adres IP klienta jest zgodny ze wzorcem, jeśli wzorzec jest zgodny, zmienna env allowedip ma wartość 1 .
W następnym kroku używamy dyrektyw Allow, Deny, aby zezwolić i odmówić dostępu do witryny.
Order deny,allow
reprezentuje kolejnośćdeny
iallow
.deny from all
ta linia mówi serwerowi, aby odmawiał wszystkim. ostatnia liniaallow from env=allowedip
umożliwia dostęp do pojedynczego adresu IP, dla którego ustawiliśmy zmienną env.Zastąp
1\.2\.3\.4\.5
dozwolonym adresem IP.Źródła:
https://httpd.apache.org/docs/2.4/mod/mod_setenvif.html
https://httpd.apache.org/docs/2.4/mod/mod_access_compat.html
źródło
Nie mogłem użyć metody 403, ponieważ chciałem, aby strona konserwacyjna i obrazy stron znajdowały się w podfolderze na moim serwerze, więc zastosowałem następujące podejście, aby przekierować na stronę konserwacji dla wszystkich oprócz jednego adresu IP *
Źródło: utworzenie strony rezerwującej, aby ukryć swój blog WordPress
źródło
Możesz mieć więcej niż jeden adres IP lub nawet innego rodzaju zezwolenie, takie jak użytkownik, nazwa hosta, ... więcej informacji tutaj https://www.askapache.com/htaccess/setenvif/
źródło
Jeśli chcesz używać mod_rewrite do kontroli dostępu, możesz użyć warunków, takich jak agent użytkownika, strona odsyłająca http, adres zdalny itp.
Przykład
Źródła:
źródło
Dodaj następujące polecenie w pliku .htaccess. I umieść ten plik w folderze htdocs.
źródło
Wydaje mi się, że to działa (przy użyciu protokołu IPv6 zamiast IPv4). Nie wiem, czy w przypadku niektórych witryn jest inaczej, ale w przypadku moich to działa.
źródło