2013-01-17 11 views
7

पर htaccess में का उपयोग करके डाउनलोड को मजबूर करना मैं एक फ़ोल्डर की सभी फ़ाइलों के डाउनलोड को मजबूर करने की कोशिश कर रहा हूं। WWW रूट

पृष्ठ पर लिंक इस

<a href="http://example.com/uploads/documents/file.pdf">Click to download</a> 

तरह लग रहा है और

<filesMatch ".*uploads/documents.*"> 
    ForceType application/octet-stream 
    Header set Content-Disposition attachment 
</filesMatch> 

मैं पहले से ही पता है कि टैग के अंदर 2 लाइनों काम करता है मैं अपने .htaccess में इस स्निपेट है, क्योंकि यह काम करता है जब मैं सीधे उस फ़ोल्डर के अंदर .htaccess डालता हूं जहां मैं निम्नलिखित कोड के साथ डाउनलोड को मजबूर करना चाहता हूं:

<Files *.*> 
    ForceType application/octet-stream 
    Header set Content-Disposition attachment 
</Files> 

ऐसा लगता है जो मैं फ़ाइलों के बारे में नहीं समझता मैच टैग।

+0

ftp root? आपका मतलब http है? htaccess ftp के लिए कुछ भी नहीं करता है। आपने "एप्लिकेशंस" भी गलत वर्तनी की है (दूसरे i पर ध्यान दें) –

+0

कृपया डाउनलोड करने के लिए 'एप्लिकेशन/ऑक्टेट-स्ट्रीम' का उपयोग न करें। यह उन सभी का दुरुपयोग है जो HTTP के बारे में अच्छे और सत्य हैं। – TRiG

+0

इसे प्रदर्शित करने के बजाय दस्तावेज़ के डाउनलोड को मजबूर करने का एक बेहतर तरीका क्या होगा? – nebulousGirl

उत्तर

13

क्रमशः FilesMatch और Files के लिए प्रलेखन देखें। यह स्पष्ट रूप से कहा गया है

इस खंड के भीतर दी निर्देशों एक basename (फ़ाइल नाम के अंतिम घटक) निर्दिष्ट फ़ाइल नाम से मेल खाते के साथ किसी भी वस्तु को लागू किया जाएगा।

इसका मतलब है कि आपके उदाहरण में यह file.pdf के खिलाफ मेल खाता है। आपका दूसरा उदाहरण *.* मैचों file.pdf, हालांकि आपका पहला उदाहरण .*uploads/documents.* नहीं है। यह वास्तव में कभी मेल नहीं खा सकता है, क्योंकि इसमें स्लैश होता है, जिसे एक निर्देशिका विभाजक के रूप में उपयोग किया जाता है।

<Location "/uploads/documents/"> 
    <Files *.*> 
     ForceType application/octet-stream 
     Header set Content-Disposition attachment 
    </Files> 
</Location> 

आप अपाचे संपादित नहीं कर सकते हैं:

आप अपाचे config

संपादित कर सकते हैं आप या तो <Files *.*> या <Files *.pdf> एक Location निर्देश में (जो आप डाउनलोड लागू करना चाहते हैं पर निर्भर करता है) जोड़ देना चाहिए कॉन्फ़िगर

दुर्भाग्यवश, .htaccess फ़ाइलों के अंदर स्थान निर्देश की अनुमति नहीं है। बस अपनी /uploads/documents/ निर्देशिका के अंदर एक .htaccess बनाएँ।

<FilesMatch "\.(mov|mp3|jpg|pdf|mp4|avi|wmv)$"> 
    ForceType application/octet-stream 
    Header set Content-Disposition attachment 
</FilesMatch> 

मेरे लिए काम किया:

+0

आपकी व्याख्या के लिए धन्यवाद। मैंने प्रलेखन को देखा था, लेकिन यह मुझे चीनी की तरह लग रहा था। Htaccess फ़ोल्डर के माध्यम से फ़ोल्डर को लक्षित करने का कोई तरीका नहीं है? – nebulousGirl

+0

मैंने डाउनलोड को मजबूर करने के लिए सही हेडर सेट करने के लिए PHP का उपयोग करना समाप्त कर दिया क्योंकि मैं फ़ोल्डर में .htaccess डालने का जोखिम नहीं उठा सकता था, लेकिन अंत में मैं समझता हूं कि टैग एचटीएसीएसी – nebulousGirl

+2

में कैसे काम करता है मुझे त्रुटि मिलती है - नहीं हो सकता अनुभाग के भीतर - ऐसा नहीं लगता कि अब और काम करता है। – Hippyjim

9

अधिक जानकारी सर्च कर रहे हैं इस कोड मिला।

1

यह कोड सही है यदि आप फ़ाइल नाम में - का उपयोग नहीं करते हैं!

उदाहरण के लिए, name1.mp3 के लिए, परिवर्तन

<FilesMatch "\.(mp3|avi)$" > 
    ForceType application/octet-stream 
    Header add Content-Disposition "attachment" 
</FilesMatch> 

अपने ब्राउज़र name1.mp3 और यह जाँच करने के लिए।