In een website heb ik een fotoalbum waarbij de foto´s via het php-script getoond worden.
nou is het ook mogelijk dat de foto benaderd wordt door de directe link als url op te geven, maar ik wil dat er dan een forbidden melding komt. Hoe doe ik dat?
De image-bestanden staan in deze structuur:
mijndomein.nl/albums/album1/foto1.jpg
Dus alles in submappen in /albums/
Dat lijkt me een beetje kort door de bocht. Wat je tegen hotlinking kunt doen is iets als het volgende in .htaccess:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?example.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
Als je een lege referrer wilt toestaan kun je regel 2 weg laten.
@Ariën: Nee, want dan krijgt het script ook geen toegang.
Ik begrijp nog steeds niet volledig hoe dat werkt met htaccess, want met deny from all, kan ik wel voorkomen dat er een directe link naar php-bestanden gemaakt wordt, maar niet naar een jpg file. Ook bv. een css bestand wordt niet uitgevoerd door het script als ik deny from all zet. (de css wordt via de head geladen)
En ik zou graag de map buiten de root plaatsen, maar de host staat dit niet toe.
[size=xsmall]Toevoeging op 25/01/2016 17:26:13:[/size]
@Ben: Ik heb deze regels in de .htaccess in de map albums toegevoegd, maar dat voorkomt nit dat ik de afbeelding rechtstreeks kan openen.
@Ariën: Nee, want dan krijgt het script ook geen toegang.
Niet waar. Via PHP wordt de foto via het filesystem opgevraagd, en het gaat dus niet via de webserver. Je kan die .htaccess toch in de map zetten waar de foto's in staan?
Ik neem aan dat er geen andere bestanden instaan die je niet geblokkeerd wilt hebben.
@Ariën: Ik zet de .htaccess in de map met de foto´s. In de .htaccess staat dit:
<files *.*>
order allow,deny
deny from all
</files>
En vervolgens ga ik naar de webpagina, roep de albums aan en zie vervolgens alles behalve de foto´s waar die er eerst wel waren. Wat doe ik dan niet goed.
Ik test met Wampserver
En om het nog erger te maken: via het script kom ik niet bij de images, maar via de directe link wel
Ik krijg het niet voor elkaar.
Met deny from all worden de images ook door het script geblocked.
Met een htpassword, dit heb ik op de hostserver getest niet in wamp, worden de images ook geblocked.
Is er geen andere methode?