2016-03-24 54 views
0

我想在我的Apache服務器上代理一堆圖像,以便它們不存儲在webroot中。
具體來說,我有我的Linux服務器上我在下面的文件夾中的所有圖像:如何編寫.htaccess文件,以便它可以在Apache服務器上的Web根目錄之外代理圖像?

/var/www/img/ 

不過,我想它,以便當用戶進入mydomain.com/img/img1.jpg(其中有服務器的路徑/var/www/html/img/img1.jpg),它引用了Web根目錄之外的以下文件:

/var/www/img/img1.jpg 

這樣看來,用在.htaccess文件(來源:https://httpd.apache.org/docs/2.4/rewrite/avoid.html#proxy)的ProxyPassProxyPassReverse規則是可能的,但我有麻煩的理解了繼承人的語法和哪個路徑去哪裏等

鑑於我的上述情況,有人可以提供一些明確的代碼,我可以寫入一個.htaccess文件來實現我想要的嗎?


編輯

Alias "/img" "/var/www/img" 

/img部分指img目錄:我剛加入下面的一行到我的Apache httpd.conf文件,然後重新啓動服務器解決了這個問題在我的webroot中,而/var/www/img部分是指我要指向的Linux文件系統目錄中的實際文件。

+1

當我主持的是東東的根目錄以外的圖像(或任何東西) ds可以被公衆訪問,我使用一個符號鏈接。這對你來說是一種選擇嗎?即'ln -s/var/www/img/var/www/html/img' –

+0

這似乎不起作用。我可能做得不正確,但我輸入了你推薦的內容,沒有錯誤,但它似乎不起作用。 – HartleySan

+0

這可能是一些事情,很難說,因爲我不知道你的設置。一般來說,這個想法是將你的圖像文件夾(不是*)放到webroot上的*符號鏈接。您的網站也必須配置爲遵循符號鏈接。 –

回答

0

您可以嘗試使用PassThrough PT flag和mod_rewrite做到這一點。

您爲實際路徑創建一個別名,然後在規則中使用它。

Alias "/img" "/var/www/img/" 
RewriteRule "img/(.+)\.(jpe?g|gif|png)$" "/img/$1.$2" [PT] 

看看它是如何工作的。

+0

巴拿馬傑克,我不確定在編輯我的問題時你是否正在編寫答案,但我完全按照「Alias」指令提出的建議,而這似乎解決了我的問題。帶有'PT'標誌的'RewriteRule'是什麼增加了'Alias'本身並不提供?謝謝。 – HartleySan

+0

現在可能沒什麼了。如果您沒有與您的別名相同的名稱**,PT規則會更有幫助。 'img'。例如,如果它是URL中的「圖片」,則PT規則將與「別名」一起解決問題。例如'RewriteRule「pics /(。+)\。(jpe?g | gif | png)$」「/img/$1.$2」[PT]'看看你爲什麼需要它? –

+0

@HartleySan由於這有助於解決您的問題,請接受答案。 –

0

最好的辦法是一個符號鏈接添加到您的其他文件夾:

ln -s /my/target/folder /var/www/html/mynewfolder 

如果你可以編輯你需要添加的FollowSymLinks指令目錄塊服務器Apache的的conf文件:

<Directory "/var/www/html/"> 
    AllowOverride All 
    Options FollowSymLinks 
</Directory> 

你也可以將它添加到您的.htaccess文件爲Options +FollowSymLinks,如果你不能編輯Apache的文件

相關問題