Programmier-Frage / htaccess / redirecting

'n Abend, ich baue hier gerade an einer Website. Folgendes macht diese:
Es wird aus einer anderen HTML-Seite ein dynamisches PNG-Image gebaut, welches man per Facebook teilen kann.

Das geht gut. Jetzt möchte ich aber, wenn jemand dieses Bild anklickt und es sich in einem neuen Fenster / Tab öffnet, dass der Browser auf die Startseite der Website redirected.

Also im Grunde das Gegenteil von Hotlinking: Einbinden eines Bildes: Ja. Direktaufruf der URL führt zu einem Redirect.

Geht das und wenn ja: wie? :slight_smile:

Für solche Regeln kannst du eigentlich nur HTTP-Header heranziehen. “Referer” gibt an, woher man kommt, insofern das beim Browser nicht irgendwie unterdrückt wird. Nur leider taugt das abgesehen davon nicht zur Unterscheidung, weil es die Info sowohl gibt, wenn das Bild irgendwo eingebunden wird, als auch wenn man von einer Seite aus zu dem Bild gelangt. Selbst durch Rechtsklick -> Neuer Tab schickt mein Chrome z.B. den Referer-Header mit. Das würde also nur mit komplett neuem Tab und dann Einfügen des Links einen Unterschied machen.

Mehr Infos bekommst du leider nicht, um zu Unterscheiden ob direkt oder nicht. Das haben prinzipiell viele Image-Hoster auch lange genutzt, um bestimmte Seiten daran zu hindern, ihre Bilder einzubinden. Es macht dann nur auch keinen Unterschied, ob die Seite das Bild eingebettet hat oder man per Klick direkt von der Seite aus zu dem Bild gelangt.

Was du dir vielleicht angucken könntest, wäre die oEmbed-Spezifikation. Ich nutze Facebook nicht, könnte mir aber auch vorstellen, dass es das ebenso nutzt, wenn Leute Links zu Image-Hostern teilen, aber nicht die Direktlinks zu den Bildern, sondern den Seiten, in denen sie eingebunden sind. Quasi wie hier im Forum bei vielen eingebetteten Sachen. Damit kannst du bestimmen, wie etwas eingebettet wird (insofern die andere Seite oEmbed unterstützt), der Link selber kann beim Aufrufen aber andere Inhalte anzeigen.

Da ich bisher aber selbst noch nicht praktisch damit gearbeitet habe, bin ich vielleicht nicht der beste “Berater” in der Hinsicht.

3 „Gefällt mir“

Ich habe mal vor Jahren was richtig dreckiges in die Richtung gehackt. Idee war, dass wer noch keine Session hatte das Bild sah, wer schon eine Session hat wird weitergeleitet. Mit sehr kurzen Session-Times (1 Minuten glaube ich) haben wir uns dafür gewappnet mehrere Bilder in kurzer Zeit anzeigen zu können.

Das ist wie gesagt seeeehr dreckig und ich weiß nicht, ob es noch funktioniert. Den Quellcode kann ich nicht mehr bieten. Den habe ich vorsichtshalber hinter der Turnhalle verbrannt :wink:

3 „Gefällt mir“

Problem ist, dass ich das reine Bild teilen muss ohne Code aussenrum. Daher geht das nicht. Sonst unterstützt FB nich das Bildseitenverhältnis das ich möchte. Drecksverein :slight_smile: Aber mal sehen was mir noch so einfällt… muss erst morgen Abend fertig sein und ich bin verhältnismäßig früh dran :wink:

Hmm, aber wer das Bild ein zweites Mal eingebettet lädt, dessen Einbettung leitet dann weiter statt das Bild zurückzugeben? Eine Technik mit Sessions oder Cookies könnte vielleicht funktionieren, solange der Browser das Blockieren von Third-Party-Cookies aktiviert hat, aber ansonsten… Da kann ich schon verstehen, dass du das sorgsam verbrannt hast. :stuck_out_tongue:

2 „Gefällt mir“

Ja klingt mit heißer Nadel gestrickt - aber interessant :smiley: Ich werde mich aber um eine cleane Lösung bemühen

Deswegen halt die kurze Session-Time. Wenn du klickst tust du das in der Regel recht bald. Wenn du weiterscrollst hofft man, dass du in den nächsten 60 Sekunden nicht auf das nächste Bild stößt. “Damals” (müsste ca. 2009 gewesen sein) war das noch nicht für irgendeine Timeline, sondern wurde nur relevant, wenn man eine Seite neu läd bzw. das Formular noch mal abschickt. Aber du hast recht: Inzwischen dürften 3rd-Party-Cookies das verhindern

Da hörts bei mir leider wieder auf, hinsichtlich Facebook. Was heißt bei dir “ohne Code aussenrum”? Gar kein Code außer .htaccess-Regeln oder meinst du das irgendwie anders, wegen dem Wort “aussenrum”?

Ursprünglich hatte ich vor eine Php-Seite zu teilen mit meta-Infos im Header und im Body nur das Bild. In den og Daten hatte ich dann eine canonical url und bildgröße und breite. Letztere liest Fb zwar, cropped aber ein Beitragsbild auf 16:9 egal was man einstellt. Mein Bild ist aber ein Quadrat, damit ich es später auch in apps, anderen social platformen etc teilen und verbacken kann. Ich kann um auf FB ein Quadrat zu teilen nur direkt ein jpg oder png sharen, keine html oder php Seiten.

PNGs in den Apache-Einstellungen als PHP parsen und dann über PHP die Bilder passend schneiden?

fällt fb nicht drauf rein. ich hoffe weiter über die og Daten es irgendwie hinzubiegen. Nervt grad etwas, aber ich mach jetzt Feierabend. Hock seit 7 im Büro :-/

Wenn du die .png-Dateien durch den PHP-Parser jagst und am Ende PNGs rauskommen (mit Header etc.), die genauso wie PNGs aussehen kann das doch Facebook nicht auffallen oder?

Das schon aber dieses Png ist dann ja exakt was ich habe :wink: Sobald aber Header drin sind bzgl umleiten wird bereits beim teilen nicht das Bild geteilt, sonder die Seite auf die das Fake PNG umleitet. War mein erster Ansatz

Der Witz ist ja dass durch die Og Daten genau das ermöglicht werden soll was ich möchte, aber halt mit gecropptem Bild.

Es soll ja nicht umleiten. Es soll nur wie ein PHP-File behandelt werden (nur intern vom Apache; kann man in der .htaccess oder der httpd.conf einstellen) und dann den Header zu PNG ändern (macht der Apache ja auch bei einem normalen PNG) und in dem PHP schreibst du dann das PHP als Bytestream oder so. Hab lange nicht mehr mit PHP gearbeitet, aber von der Theorie müsste das gehen

Aber was habe ich davon? Öffnet man die Grütze bekommt man ja dennoch einfach ein Bild angezeigt…,

Du kannst dann Schweinereien mit PHP machen. Z.B. die refferer untersuchen. Du darfst halt nur keinen Output haben, der nicht zu einem PNG passt. Möglicherweise unterscheiden die sich doch bei Einbindung und klicken. Da ja der Facebook-Newsfeed dynamisch geladen wird könnte man das versuchen. Chance ist gering, aber du klammerst dich glaube ich schon an Strohhalme :wink:

1 „Gefällt mir“

stimmt! ich check das mal. Danke!

Mein Gehirn ist um die Uhrzeit auch nur noch Matsch, vielleicht kann ich morgen wieder mitdiskutieren. :smile:

1 „Gefällt mir“

Problem habe ich übrigens gestern in den Griff bekommen. Ich übermittle per Sharer an Facebook eine PHP Datei, die, wenn der referer facebook ist, ein png zurückgibt mit Header und allem Scheiß.
Auf meinem Server habe ich dann das erkennen des Referers komplett deaktiviert und in der PHP Datei eine Weiche, dass wenn kein Referer erkannt wird (also immer, außer beim embedden) per header(Location…) auf die index-Datei umgeleitet wird. So einfach kann es sein :slight_smile: Danke an euch für die Anregungen!

2 „Gefällt mir“