J'essaie de restreindre une URL spécifique à être disponible en dehors du réseau uniquement à des adresses IP spécifiques. Lorsqu'un utilisateur extérieur essaie d'accéder à cette URL et non à partir de la liste des adresses IP, il doit être redirigé vers la page d'accueil.
C'est ce que j'ai essayé jusqu'à présent sans aucune chance. La dernière partie, il redirige tout le monde vers la page d'accueil quelle que soit l'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: l'URL / secret est en fait une URL virtuelle et n'existe pas physiquement sur le lecteur.
ip
apache-2.4
301-redirect
restriction
Denis Rendler
la source
la source
RewriteEngine On
?Réponses:
Utilisez
Order
,Deny
etallow
de préciser qui a accès à votre serveur virtuel ou l' emplacement.En ce qui concerne la redirection, pensez à une page d'erreur personnalisée . Ceci est beaucoup plus général, car tout accès non autorisé doit provoquer une erreur 403 et peut donc être évalué facilement.
Je n'ai jamais fait ça avec apache, mais utilisez cette stratégie avec nginx. Pour apache quelque chose comme ça devrait faire:
la source
ErrorDocument
partie provient des 2.4 docs. Je ne me apache, puisque nginx est autour, mais suppose queOrder
,Deny
etAllow
sont toujours là dans apache 2.4Les options Ordre, Refuser et Autoriser ont été remplacées dans Apache 2.4 par
Vous pouvez restreindre explicitement les adresses en utilisant les éléments suivants:
L'inverse est également vrai, pour tout restreindre et autoriser uniquement un sous-ensemble à utiliser les éléments suivants:
Plus d'informations sont disponibles sur la documentation de contrôle d'accès Apache 2.4.
En ce qui concerne votre question (édité la mienne en raison d'un manque de points pour ajouter un commentaire), vous devriez pouvoir simplement définir un ErrorDocument avec l'index défini comme chemin URL:
J'espère que cela t'aides!
la source
allow
bien que déconseillé,Require 127.0.0.1
toujours autoriser l'accès par une adresse externe à partir d'une machine locale, alors que la syntaxe autorisée ne permet qu'à partir de 127 adresses.Pour Apache 2.4, vous pouvez utiliser <RequireAny>. Vous pouvez le faire dans un fichier vhost ou .htaccess ....
Documents Apache https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#requireany
la source