Plus précisément, j'ai un fichier htaccess qui empêche quiconque de voir le contenu du répertoire. Ainsi, personne ne peut voir mes milliers d’images dans www.example.com/images en utilisant:
deny from all
allow from 127.0.0.1
Cependant, je souhaite utiliser ces images sur www.example.com telles que, <img src="images/thisimg.jpg" />
fonctionne.
J'espère que je suis dans la bonne direction, mais j'apprécie toute perspicacité/réorientation. Cela ressemble à: Comment protéger tout le contenu du répertoire, mais accéder au script php mais je veux créer un lien vers ces images dans ce répertoire, et utiliser deny from all
ne me permet pas de le faire.
Merci d'avance pour votre aide.
Tout ce dont vous avez besoin pour empêcher les gens de voir le contenu du répertoire est un fichier index.php ou .html dans ce dossier. Toutes les demandes de yoursite.com/images chargeront index.php, que vous définissez sur une page factice.
index.html pourrait être quelque chose comme:
<html><title>Forbidden!</title><body>Nothing to see here...</body></html>
ou un script de redirection index.php:
<?php header('Location: /index.php'); exit(); ?>
N'utilisez pas .htaccess pour bloquer les entrées de répertoire, cela bloque l'accès à tout.
Vous n'avez pas besoin de créer un fichier index comme celui-ci-
<html>
<title>Forbidden!</title>
<body>
<h1>Access Denied !!</h1>
</body>
</html>
Et placez-le dans chaque répertoire de ressources et chaque répertoire que vous ne souhaitez pas montrer aux utilisateurs.
Vous pouvez simplement ajouter ceci à la fin de votre fichier .htaccess.
Options -Indexes
Donc, votre fichier .htaccess
peut ressembler à ceci-
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Options -Indexes
</IfModule>
Si vous faites cela et essayez d'aller dans un répertoire, vous obtiendrez quelque chose comme ceci-
Ainsi, personne ne pourra découvrir aucun répertoire sur le serveur.
Plus peut être trouvé ici .
Solution la plus simple: créez un nom de page vierge index.html
dans votre dossier d'images :)
Utilisez quelque chose comme ceci dans le fichier .htaccess:
#
###################################################################
### ###
### Currently protection ###
### images (jpg, jpeg, gif, png, bmp) ###
### JavaScript (js) ###
### Cascading Style Sheets (CSS) ###
### ###
###################################################################
#
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mysite.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mysite.com$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp|js|css)$ http://access- denied.us/hotlinks.html [NC,L]
</ifModule>
#
Cela permettra à vos pages de charger les documents et les images souhaités tout en empêchant tout le monde d’autres pages de le faire. Je l'utilise sur tous mes sites et cela fonctionne très bien.
Pour moi, je pense que le moyen le plus simple de le faire est d’utiliser une redirection. Dans le répertoire images, créez simplement une page d’index et dans la page d’index, vous avez une redirection vers la page d’index de votre site i.e
<?php
header( 'Location: http://www.yoursite.com' ) ;
?>
Ainsi, chaque fois que quelqu'un essaie d'accéder directement à la page de l'image, il finit par aller à la racine de votre site.
dans ce dossier dont vous voulez afficher l'accès interdit
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access This Folder
on this server.</p>
</body></html>
Si c'était moi, je m'assurerais que le référent est www.example.com, ce qui en fait une des utilisations principales.
La suggestion de Magicianeer est la meilleure pour ce problème. Si vos images sont divisées en sous-dossiers, vous devez placer un fichier d’index dans chacun d’eux. Les options -Indexes ne doivent être effectuées qu'une fois à la racine.
deny from all
permet aux fichiers d'être utilisés par les scripts côté serveur, mais limite l'accès complet au Web.
J'utilise une astuce qui fait croire aux gens qu'ils ont accédé à un dossier qui n'existe pas.
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<title>404 Not Found</title>
</head>
<body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
<p>Additionally, a 404 Not Found
error was encountered while trying to use an ErrorDocument to handle the request.</p>
</body>
</html>