2017-04-02 39 views
0

我需要將所有圖像重定向到一個php文件,包括路徑和文件名。Apache 2.4 - 如何將圖像重定向到PHP文件?

想象一下,我的域名是example.com 我可能有https://example.com/art/logo.png,想做到這一點重定向到https://example.com/scripts/image_loader.php?a:art&b=logo.png

所以,我將迫使被重定向到一個PHP文件,該文件將顯示圖像的任何請求。我這樣做是爲了控制誰可以訪問圖像,並防止盜鏈。 我也希望html文件使用這個重定向並使用php文件來顯示圖像,例如爲包括'img src =/art/logo.png'

我已經做了mod_rewrite使用引用標題方法,但它不工作,我不知道爲什麼。我假設https協議不在標頭中使用引用。

對於PHP我需要知道如何阻止某人盜鏈我的圖像,並將它們作爲文件下載。 我可以確定用戶是個人還是機器人還是某種網站開膛手?

我知道我無法阻止一個人下載圖像。我只是想讓他們更難。所以,他們不能簡單地下載它們或使用網站開膛手軟件。

任何建議將是偉大的。我的網站使用或運行在HTTPS上。許多用於盜鏈的解決方案僅顯示使用http的示例。

回答

0

1.您可以確定請求來自用戶或機器人嗎?

NYeah,或多或少^^您可以使用UserAgent-Header字段來確定請求是否通過瀏覽器發送。但問題是你想要將所有站點翻譯器(如HTTrack)加入黑名單或將所有常見瀏覽器列入白名單?兩者都將是一個不完整和相當長的名單。

2.如何重寫所有影像複製到你的PHP文件

RewriteEngine On 
RedirectRule ^/(.+/(.+\.(jpe?g|gif|png|tif|bmp))$ /scripts/image_loader.php?a:$1&b=$2 

這改寫了標準圖像的所有請求,如果被叫URI模式遵循您指定的「/path/image.png '至/scripts/image_loader.php?a:path & b = image.png

更新

RedirectRule ^^/(.+/)+(.+\.(jpe?g|gif|png|tif|bmp))$ /scripts/image_loader.php?a:$1&b=$2 

第一個支架(.+)包括服務器名稱後面的部分直到最後一個文件名,因此在示例/path/example/image.png中它將包含path/example。第二個支架(.+)僅包含文件名,因此在示例/path/example/image.png中將包含image.png。現在,這兩個值分配給目標URL - >

/scripts/image_loader.php?a:path/example&b=image.png 

希望我把你的問題的權利......

+0

你已經嘗試了這一建議?剛剛看到你接受了我的'編輯',所以認爲你可能會測試它) –

+0

我還沒有嘗試過,但得到了一個部分的問題:$ 1&b = $ 2什麼是$ 1和$ 2像是如何值分配到那個?我需要抓取圖像的目錄和文件名。然後將其傳遞給一個php文件。所以本例中的藝術品是該網站中的一個文件夾,而logo.png是該文件。我有2個變量爲php文件獲取根文件夾後的文件夾路徑,然後第二個var是文件名。 – user520108

+0

在我的更新中添加了一個簡短的說明 –

相關問題