Avatar billede advancedweb Nybegynder
01. juli 2005 - 18:02 Der er 22 kommentarer og
1 løsning

Billede må kun vises hvis forespurgt af side på serveren

Nogen der ved om man med htaccess kan stille det sådan at det kun er hvis f.eks billedet bliver forespurgt fra en side på domænet/serveren der må vises...

Altså hvis en klient i browseren skriver www.siden.dk/images/bg.gif så bliver han afvist, men hvis f.eks. index.htm (på www.siden.dk) forspørger billedet som skal vises.. så må det godt vises
Avatar billede rtfm_now Nybegynder
01. juli 2005 - 18:04 #1
Ja, .htaccess kan gøre det, emnet hedder Deeplinking.

Her er en tutorial: http://wsabstract.com/howto/htaccess10.shtml
Avatar billede advancedweb Nybegynder
01. juli 2005 - 18:21 #2
Deeplinking... er det ikke bare fra andre domæner/servere den ikke må hente.

Altså jeg vil have mit til kun at kun tillade at vise billede hvis det er en fil på serveren der forespørger, altså billedet kan ikke blive vist hvis man bare skriver www.siden.dk/billede.gif men kun hvis index.htm (på www.siden.dk) forespørger den med f.eks <img src="billede.gif"> eller style="background-image: url('billede.gif')"

Jeg selvfølgelig prøvet den tutorial, men har ikke fået det til at virke :)
Avatar billede webt Nybegynder
02. juli 2005 - 11:03 #3
Du kan bruge mod rewrite til at klare arbejdet, hvis du smider følgende kode i en htaccess fil ind i din billede mappe
##Start rewrite engine
RewriteEngine on
##Hvis loades fra side.com/index.php med valgfri www samt mulighed for subdomain
RewriteCond %{HTTP_REFERER} !^http://(www\.)?([^.]+\.)?siden.dk/index.htm [nc]
##send brugeren til main domain
RewriteRule /* http://www.siden.dk [R,L]

Det der sker er den går ind og tjekker om brugeren bliver henvist fra index.php hvis det ikke er tilfælde smider den brugeren til side.com.
http://httpd.apache.org/docs-2.0/mod/mod_rewrite.html

Har ikke lige testet den men skulle mene den virker :)
Mvh
Martin
Avatar billede advancedweb Nybegynder
02. juli 2005 - 13:09 #4
har ikke rigtig kunne få det til at virke.. jeg har prøvet at læse lidt i apache-manualen men ligemeget hjalp det :D
Jeg har prøvet nogle forskellige kombinationer... dette er lidt af hvad jeg har prøvet

RewriteEngine on

#RewriteCond %{REQUEST_URI} ^*/sys_images/*
#RewriteRule ^(.*) ../index.php [L]

##Hvis loades fra side.com/index.php med valgfri www samt mulighed for subdomain
##RewriteCond %{HTTP_REQUEST} ^http(s)://([a-z0-9-]+\.)*advancedweb.dk/sys_images/* [NC]
##RewriteRule /* http://www.advancedweb.dk/ [R,L]

##RewriteCond %{HTTP_REFERER} !^http://(www\.)?([^.]+\.)?advancedweb.dk/* [nc]

##send brugeren til main domain
##RewriteRule /* http://www.advancedweb.dk [R,L]

## If it is a file who exist, dont rewrite
##RewriteCond %{REQUEST_FILENAME} !-f


##RewriteRule ^(.*) ../index.php

Men ellers nogen der kender en lille tutorial til htaccess (lidt lettere forståelig end apache-manualen).. altså der forklarer at Man slår Rewrite Engine til og laver en "regel" med RewriteCond og så hvordan "syntaxen" er (f.eks ! foran betyder "IKKE"/omvendt) osv.
Avatar billede webt Nybegynder
02. juli 2005 - 13:43 #5
Har ikke lige noget tutorial omkring mod rewrite liggende men der er et par ting galt med ovenstående, den kode som du fik af mig skal ligge i sin egen .htaccess inde i din billede mappe og så sørger den for at hvis det ikke er index.htm , bør virke uden noget andet i den htaccess, din ovenstående giver et par problemer, fx når du har http_refere som /* så vil den også sige ok til domæne/billedemappe/billede.jpg og det går jo ikke, og måske din filnavn også konflikter lidt.

Du kan evt. kigge lidt på flg:
http://www.mod-rewrite.com/forum/
http://forum.modrewrite.com/
Begge forumer med massere af poster omkring mod rewrite, men som sagt har ikke nogle direkte tutorials

Mvh
Martin
Avatar billede advancedweb Nybegynder
02. juli 2005 - 15:08 #6
Den ligger også i /sys_images/ hvor der ligger en del billeder.. men jeg har også nogle billedere længere inde i det katalog /sys_images/icons/ osv.

Man skal vel ikke have i hver enkel mappe vel?

Men prøver lige at kigge lidt rundt på de foras...
Avatar billede webt Nybegynder
02. juli 2005 - 15:21 #7
Nej det skulle ikke være nødvendigt da icons jo også vil være et kald til sys_images på lige fod med etbillede.jpg, men i tilfælde af jeg tager fejl prøv at smide den op i begge :)

Mvh
Martin
Avatar billede advancedweb Nybegynder
02. juli 2005 - 15:35 #8
jeg ved ikke om det kan gøre nogen forskel at min htaccess-fil i rodmappen ser således ud:

php_flag register_globals 0

IndexIgnore *

RewriteEngine On

RewriteRule ^(.*) index.php

Bare lige så du også får den med hvis det skulle skabe lidt "kaos" at denne peger alle til index.php med undtagelse af at man stiller noget andet i en bestemt mappe selvfølgelig :D
Avatar billede advancedweb Nybegynder
02. juli 2005 - 15:55 #9
Har lige prøvet at "tænke" mig logisk frem til en løsning, men kan ikke lige se hvorfor det skulle være forkert:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^*/sys_images/* [NC]
RewriteRule ^(.*) ../index.php

Burde det ikke være en løsning hvis den altså ikke sagde fejl500 (Internal Server Error)
Avatar billede webt Nybegynder
03. juli 2005 - 10:00 #10
Har ikke lige mulighed for at teste noget som helst, da jeg først er hjemme igen i morgen aften, men så kigger jeg på det :)

Mvh
Martin
Avatar billede advancedweb Nybegynder
03. juli 2005 - 10:15 #11
okay... tak :D ... jeg venter spændt :p
Avatar billede webt Nybegynder
04. juli 2005 - 16:35 #12
Lige testet følgende:
##Start rewrite modulet
RewriteEngine on
##Hvis http referer er forskellig fra martin-nielsen.com/exp/629844/EtEllerandetHer.php eller .htm
RewriteCond %{HTTP_REFERER} !^http://(www\.)?martin-nielsen\.com/exp/629844/(.*)\.(php|htm)$ [NC]
##Send brugeren hen til notallowed.php
RewriteRule /* http://martin-nielsen.com/exp/629844/notallowed.php [R,L]

Filerne er testet her:
http://martin-nielsen.com/exp/629844/

Billedet vises på:
http://martin-nielsen.com/exp/629844/test.php
http://martin-nielsen.com/exp/629844/test2.htm
men et direkte kald til
http://martin-nielsen.com/exp/629844/images
smider brugeren til
http://martin-nielsen.com/exp/629844/notallowed.php

Strukturen er som følger:

/629844
- images
`- .htaccess
- test.jpg
- icons
`- test.jpg
- test.php
- test2.htm

Og det virker for både images mappen samt undermappen icons (htaccess ligger i images)

Håber du kan bruge det
mvh
Martin
Avatar billede advancedweb Nybegynder
05. juli 2005 - 12:18 #13
Har prøvet mig lidt frem men når jeg har sat dette ind i min htaccess-fil i /images/

##Start rewrite modulet
RewriteEngine on
##Hvis http referer er forskellig fra martin-nielsen.com/exp/629844/EtEllerandetHer.php eller .htm
RewriteCond %{HTTP_REFERER} !^http://(www\.)?advancedweb\.dk/(.*)\.(phps|htm)$ [NC]
## /error/notfound/
RewriteRule /* http://advancedweb.dk/error/notfound/ [R,L]

Så ligemeget om den kommer fra serveren eller om man forespørger billedet så blive man afvist...

Har også prøvet at fjerne min htaccess i rod-mappen i tilfælde af at det var det der skulle være problemet, men der sker det samme

Men det jeg har sat ind i htaccess.. det skulle ligge i htaccess-filen i image-mappen (advancedweb.dk/images/), ikke?... og er det ellers rigtigt hvad jeg har rettet til i koden?
Avatar billede webt Nybegynder
05. juli 2005 - 13:24 #14
Det ser helt rigtigt ud, virker det i mit eksempel? eller afviser den også der?
Avatar billede advancedweb Nybegynder
05. juli 2005 - 13:26 #15
det virker på dit!
Avatar billede webt Nybegynder
05. juli 2005 - 13:40 #16
Rewriter du fx /downloads/ til et andet script?

Fordi så kan det godt tænkes der skal ændres lidt i denne rewrite
Avatar billede advancedweb Nybegynder
05. juli 2005 - 13:42 #17
ja... alt bliver rewrited til index.php i rodmappen.. men har som sagt prøvet at fjerne  .htaccess-filen i rodmappen

Men jeg kan godt lige prøve igen fr en sikkerheds skyld
Avatar billede advancedweb Nybegynder
05. juli 2005 - 13:46 #18
Altså det virker når htaccess i rodmappen er væk, (altså "spæringen"), men heller ikke index.php kan få adgang til billederne så helt virker det ikke :D
Avatar billede webt Nybegynder
05. juli 2005 - 13:57 #19
Rodder lige :) så er jeg tilbage straks
Avatar billede webt Nybegynder
05. juli 2005 - 14:35 #20
Hmm blev en lidt lang rodning,
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?advancedweb\.dk([^/]*|^images) [NC]
RewriteRule /* http://advancedweb.dk/error/notfound/ [R,L]

Bør klare det, dog et lille problem jeg ikke lige helt kan forstå, det virker ikke hvis man skriver fx /download/ den sidste slash skal væk, hvis det er et problem for dig rodder jeg gerne videre. Du kan se det virke:
http://martin-nielsen.com/exp/629844/test
Den bliver rewritet til rewritetest.php som så includer test.php og viser billedet
men http://martin-nielsen.com/exp/629844/test/ virker ikke normalt ville jeg mene der bare skulle en ?/? sidst i rewriten men det funker ikke,,,

Men som sagt, hvis den skal virke med / så kigger jeg lidt videre
Mvh
Martin
Avatar billede advancedweb Nybegynder
05. juli 2005 - 14:44 #21
Det ser sgu ud til at virke...

Mange, mange tak for din vist store indsats :p

Post lige et svar så er pointene selvføleglig dine :)
Avatar billede webt Nybegynder
05. juli 2005 - 14:49 #22
Du får et svar fra mig, glad for at kunne hjælpe, og ps, fedt site :)
Avatar billede advancedweb Nybegynder
05. juli 2005 - 14:52 #23
taktak... :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester