2012-04-19 16 views
52

यह एक ही समस्या के लिए मेरी दूसरी पोस्ट है। पिछले पोस्ट कोज़ को कुछ और उदाहरण की आवश्यकता थी।(htaccess) डायरेक्ट यूआरएल एक्सेस से फ़ाइल को कैसे रोकें?

ठीक है फिर कहते हैं, मैं अपाचे का उपयोग कर रहा है और मैं एक नमूना वेब फ़ोल्डर है (मेरे स्थानीय होस्ट पर) की तरह कर सकते हैं:

फ़ोल्डर में, फ़ाइलों हो जाएगा :

  • index.html
  • sample.jpg
  • +०१२३५१६४१०६
  • .htaccess

"index.html" बस में शामिल होंगे:

<html> 
<body> 
    <img src="sample.jpg" /> 
</body> 
</html> 

जब मैं http://localhost/test/ पर वेबसाइट चलाने के लिए, बस हो जाएगा पृष्ठ पर छवि `sample.jpg 'दिखा ।

तो समस्या यहाँ है:

  • मैं url बार में सीधे http://localhost/test/sample.jpg के रूप में छवि दिखाने को रोकने के लिए चाहते हैं।

नोट:
एक जवाब नीचे होने का दिन के बाद, मैंने पाया सब समाधान तार्किक काम करते हैं, लेकिन Firefox के साथ समस्या। मेरा मतलब है, नीचे दिए गए उत्तर प्रत्येक ब्राउज़र पर परीक्षण करते समय समाधान दे रहे हैं लेकिन फ़ायरफ़ॉक्स के साथ नहीं।

उत्तर

84

का अनुसरण करें।

नोट: यह संभव है जब आप छवि के साथ कुछ पृष्ठ को खोलने और फिर पता पट्टी में उस छवि के पथ कॉपी आपको लगता है कि छवि देख सकते हैं कि, यह केवल ब्राउज़र की कैश की वजह से है, वास्तव में उस छवि नहीं है सर्वर से लोड किया गया (डेवो से, नीचे पूरी टिप्पणी)

+1

पहला 'रिवाइटकंड' क्यों है? उस मामले को दूसरे के '। * $' निर्देश द्वारा कवर किया जाना चाहिए? –

+0

मैंने यह कोशिश की है और यह लोकहोस्ट पर बहुत अच्छा काम करता है। यह शायद एक बेवकूफ सवाल है, लेकिन क्या यह कोड अभी भी काम करेगा यदि मैंने इसे अपने सर्वर पर अपलोड किया है? –

+0

@GilbertMendoza हाँ दोनों सवालों के। –

7

अपनी टिप्पणी के आधार पर लगता है कि यह है कि तुम क्या जरूरत है:

RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost/ [NC] 
RewriteRule \.(jpe?g|gif|bmp|png)$ - [F,NC] 

मैं अपने स्थानीय होस्ट पर यह परीक्षण किया है और यह काम करने ठीक लग रहा है। यदि आप छवियों सीधे पहुंचें,

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] 
RewriteRule \.(gif|jpg)$ - [F] 

रिटर्न 403 है, लेकिन उन्हें साइट पर प्रदर्शित करने के लिए अनुमति देता है:

+0

एक बात मैं आपको अपने ब्राउज़र कैश को साफ़ करने और पुनरारंभ करने का सुझाव दूंगा। और जब आप 'http: // localhost/test/sample.jpg' तक पहुंचते हैं तो सुनिश्चित करें कि आप वेब सर्वर से यह सुनिश्चित करने के लिए कुछ बार' ctrl + r' दबाएं। जब आप यह सुनिश्चित करने के लिए यह सुनिश्चित करते हैं कि आप इस छवि के लिए 200 या 403 देखते हैं तो यह आपके tail.log को भी पूंछ करता है। – anubhava

+0

@ _ @ जब आप सुझाव देते हैं तो परीक्षण करते हैं, FIREFOX पहले जैसा ही कर रहा है (हालांकि मैं कैश साफ़ करता हूं और रीफ्रेश करता हूं, और अपाचे को फिर से शुरू करता हूं) लेकिन आईई अच्छी तरह से काम करता है। तो, मुझे यह कैसे समझना चाहिए। –

+1

आपको अपाचे को उछालने की आवश्यकता नहीं है। आपके लिए क्या हो रहा है कि जब आप 'http: // localhost/test' पर जाते हैं तो एफएफ उस पृष्ठ पर स्थिर संसाधनों को कैश कर रहा है यानी' sample.jpg'। फिर एक बार जब आप यह यूआरएल खोलें: 'http: // localhost/test/sample.jpg' और एफएफ इसे अपने कैश से परोसता है। यही कारण है कि मैंने आपको अपने access.log को पूंछ करने का सुझाव दिया। हालांकि एफएफ में 'यदि आप एक नया टैब खोलते हैं और अपना छवि यूआरएल दर्ज करते हैं और' ctrl + r' कुछ बार 'दबाते हैं तो आपको फोरबिडन संदेश दिखाई देगा। ** पीएस: मैंने फ़ायरफ़ॉक्स, क्रोम, सफारी और आईई में इसका परीक्षण किया और यह हर जगह काम करता है ** – anubhava

7

सबसे पहले, यह पता लगाएं कि मुख्य अपाचे की कॉन्फ़िगरेशन फ़ाइल httpd.conf कहां स्थित है। यदि आप डेबियन का उपयोग करते हैं, तो यह यहां होना चाहिए: /etc/apache/httpd.conf। विम या नैनो जैसे कुछ फ़ाइल संपादक का उपयोग करना इस फ़ाइल को खोलने और लाइन है कि इस प्रकार लग रहा है लगता है:

Options Includes Indexes FollowSymLinks MultiViews 

तो शब्द इंडेक्स को हटाने और फ़ाइल सहेजें।लाइन यह एक तरह दिखना चाहिए:

Options Includes FollowSymLinks MultiViews 

के बाद यह किया जाता है, अपाचे (Debian में जैसे /etc/init.d/apache पुनः चालू करें) को पुनरारंभ करें। बस!

+0

धन्यवाद के अपलोड फ़ोल्डर से बचत से फाइल को रोकने के लिए, यह की तरह काम करता जादू – Anup

21

रोसीपोव का शासन बहुत अच्छा काम करता है!

मैं इसे रिक्त या विशेष संदेश प्रदर्शित करने के लिए लाइव साइटों पर उपयोग करता हूं;) फ़ाइलों के प्रत्यक्ष पहुंच प्रयास के स्थान पर, मैं प्रत्यक्ष दृश्य से थोड़ी सी रक्षा करने के बजाय चाहता हूं। मुझे लगता है कि यह 403 निषिद्ध से अधिक मजेदार है।

तो rosipov के शासन लेने {gif, jpg, js, txt} 'messageforcurious' करने के लिए फ़ाइलों के लिए किसी भी प्रत्यक्ष अनुरोध को रीडायरेक्ट करने:

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.ltd [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.ltd.*$ [NC] 
RewriteRule \.(gif|jpg|js|txt)$ /messageforcurious [L] 

मैं करने के लिए प्रत्यक्ष acces अस्वीकृत करने के लिए एक विनम्र तरीके के रूप में इसे देख , कहें, एक सीएमएस समझदार फाइलें जैसे xml, जावास्क्रिप्ट ... सुरक्षा में दिमाग में: इन सभी बॉट्स को आजकल वेब पर स्क्रॉल करने के लिए, मुझे आश्चर्य है कि उनके अहंकार मेरे 'messageforcurious' से क्या करेंगे।

संबंधित मुद्दे