2011-10-14 131 views
2

我有這個網址:www.example.com/yyy.gif在我的網站。 它實際上不是圖像的直接鏈接,而是一個包含圖像的HTML頁面(直接指向圖像的url是www.example.com/files/yyy.gif)。我想保持這種方式。熱鏈接重定向

的問題

當鏈路(www.example.com/yyy.gif)某處發佈(論壇,在各個網站的評論),它是相當普遍的,他們的腳本假定這是一個直接鏈接到圖像並嘗試將其顯示爲圖像(<image src="www.example.com/yyy.gif">),從而導致其網站上的圖像破碎。

問題

有沒有辦法檢測到這些情況,並自動將它們重新路由到直接圖片網址?請記住,訪問者應該能夠在不重定向的情況下打開原始網址。

+0

HTTP引用程序檢查是否足以滿足您的需求?也就是說,如果引用者不是www.example.com,那麼你做一個內部(服務器端)重定向到www.example.com/files/yyy.gif –

+0

不,理想的行爲是內部重定向只有當** www.otherexample.com **通過''鏈接到我時,但是當用戶點擊發佈時沒有重定向** www.otherexample.com **。我不確定是否可以完成。 – davis

回答

1

我想我明白了!

因此,我檢查了通過在鏈接上使用<img>標籤加載鏈接訪問同一URL時生成的請求標頭。

唯一不同的參數是「接受」。當通過<img>訪問URL時,它是*/*(Chrome,IE,Safari)或image/png,image/*;q=0.8,*/*;q=0.5(FF)。

但是,當通過單擊鏈接(或者乾脆直接打開URL)訪問,它是這樣的text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

所以我輸出任何內容之前檢查在我的劇本「text/html的」。如果它存在,我輸出html版本;否則直接進入圖像。

它看起來像我想要的一樣工作(耶!)。

請問我應該注意哪些缺陷?

+0

不幸的是,我不認爲你可以依靠這一點。沒有可靠的方法來告訴源客戶端(瀏覽器)如何請求文件...即使引用者不能被指定。 –