Apache सर्वर पर सभी डोमेन के लिए robots.txt फ़ाइल कैसे बनाएं


10

हमारे पास वर्चुअल होस्ट के साथ XAMPP अपाचे विकास वेब सर्वर सेटअप है और हमारी सभी साइटों को क्रॉल करने से रोकना चाहते हैं। यह आसानी से robots.txt फ़ाइल के साथ किया जाता है। हालाँकि, हम बल्कि प्रत्येक vhost में एक disallow robots.txt को शामिल नहीं करेंगे और फिर इसे तब निकालना होगा जब हम किसी अन्य सर्वर के साथ साइट पर रहते हैं।

वहाँ एक अपाचे विन्यास फाइल के साथ एक तरीका है robots.txt को सभी अनुरोधों को फिर से लिखना है।

यदि हां, तो क्या आप मुझे एक उदाहरण दे सकते हैं? मुझे लगता है कि यह कुछ इस तरह होगा:

RewriteEngine On
RewriteRule  .*robots\.txt$         C:\xampp\vhosts\override-robots.txt [L] 

धन्यवाद!


robots.txt अनिवार्य नहीं है और कुछ क्रॉलर इसे अनदेखा करेंगे। इसे सुरक्षा सुविधा के रूप में नहीं देखा जाना चाहिए। यदि आप अपनी साइट को तब तक छिपाना चाहते हैं, जब तक वह जनता के लिए तैयार न हो, प्रमाणीकरण जोड़ें।
मिरिकिया वुटकोविसी

जवाबों:


25

Apache mod_alias इसके लिए डिज़ाइन किया गया है और कोर Apache सिस्टम से उपलब्ध है, और mod_rewrite के विपरीत, लगभग कोई प्रसंस्करण ओवरहेड के साथ एक जगह पर सेट किया जा सकता है।

Alias /robots.txt C:/xampp/vhosts/override-robots.txt

Apache2.conf फ़ाइल में उस लाइन के साथ, सभी vhost के बाहर, http://example.com/robots.txt - किसी भी वेबसाइट पर यह सेवा करता है, दी गई फ़ाइल को आउटपुट करेगा।


इस। Aliasप्रत्येक <VirtualHost>ब्लॉक में एक रखो । +1।
स्टीवन सोमवार

धन्यवाद! यह पूरी तरह से काम किया। मुझे पता था कि एक आसान उपाय था ...
माइकल बर्कोम्पास

यदि आप इसे हर एक वर्चुअल-होस्ट पर चाहते हैं, तो आपको इसे उन सभी में डालने की आवश्यकता नहीं है। यह वैश्विक स्तर पर जा सकता है, जैसे कि डिफॉल्ट / मैनुअल उर्फ ​​बॉक्स से बाहर होता है।
एलिस्टर बुलमैन

समाधान के लिए धन्यवाद, हालांकि C: / को देखकर मुझे अपने पेट के लिए बीमार बना देता है, यह जानते हुए कि वहाँ एक और विंडोज़ सर्वर है :) मैंने अपने मॉड्यूल में अपना एडिट किया ।conf फ़ाइल या mods- सक्षम / alias.conf में जैसे: Alias /robots.txt /var/www/robots.txt
unc0nnected 16

1
यह सुनिश्चित करने के लिए कि यह फ़ाइल तब भी उपलब्ध है, जब अन्य एक्सेस कंट्रोल इसे ब्लॉक करेंगे, उपनाम <Location "/robots.txt"> Allow from all </Location><IfModule alias_module>
डालेंगे

1

अपनी सामान्य वैश्विक robots.txtफ़ाइल को अपने सर्वर के फाइल सिस्टम में कहीं रखें जो अपाचे प्रक्रिया के लिए सुलभ है। चित्रण के लिए, मैं मान लूंगा /srv/robots.txt

फिर, mod_rewriteउस फ़ाइल को उन ग्राहकों की सेवा करने के लिए सेट करें जो इसे अनुरोध करते हैं, निम्नलिखित नियमों को प्रत्येक vhost के कॉन्फिगर <VirtualHost>ब्लॉक में डालें :

RewriteEngine on
RewriteRule ^/robots.txt$ /srv/robots.txt [NC, L]

यदि आप ब्लॉक के .htaccessबजाय प्रति-निर्देशिका फ़ाइलों में पुनर्लेखन नियम डाल रहे हैं <VirtualHost>, तो आपको नियमों को थोड़ा संशोधित करना होगा:

RewriteEngine on
RewriteBase /
RewriteRule ^robots.txt$ /srv/robots.txt [NC, L]

क्या आप इसे समझा सकते हैं "अपनी सामान्य वैश्विक robots.txt फ़ाइल को अपने सर्वर के फाइल सिस्टम में कहीं रखें जो अपाचे प्रक्रिया के लिए सुलभ है। उदाहरण के लिए, मैं इसे /srv/robots.txt पर मान लूंगा।" विस्तृत रूप में? मुझे यह जानने की आवश्यकता है कि अपाचे प्रक्रिया के लिए उपलब्ध निर्देशिका बनाने से आपका क्या मतलब है?
माइकल बर्कम्पास

प्रत्येक साइट C: \ xampp \ vhosts के तहत testite.int.devcsd.com जैसे फ़ोल्डर में निहित है
माइकल बेरकोम्पास

@ मिचेल: इस अत्यधिक जटिल mod_rewriteहैक से परेशान न हों । Aliasइसके बजाय का उपयोग करें , जैसा कि एलिस्टर द्वारा सुझाया गया है।
स्टीवन सोमवार

0

निश्चित नहीं है कि आप लिनक्स पर XAMPP चला रहे हैं या नहीं, लेकिन यदि आप हैं, तो आप सभी वर्चुअल मेजबानों से एक ही robots.txt फ़ाइल में एक सिमलिंक बना सकते हैं , लेकिन आपको यह सुनिश्चित करने की आवश्यकता है कि प्रत्येक वर्चुअल होस्ट के लिए आपका Apache कॉन्फ़िगरेशन क्या है? सीमलिंक ( <Directory>निर्देशों के तहत Options FollowSymLinks) का पालन ​​करने की अनुमति दी गई है ।


मैं नहीं बल्कि हर एक vhost घोषणा को संपादित करना होगा। वहाँ 30 से अधिक कर रहे हैं ... इसके अलावा, मैं चाहता हूँ कि यह एक स्वचालित सवारी हो, ताकि मुझे कुछ भी न करना पड़े जब एक नया vhost बनाया जाए।
माइकल बर्कम्पास

माइकल, बस एक बड़े पैमाने पर संपादित करने के लिए sed का उपयोग करें, बहुत आसान सामान, आपको निश्चित रूप से इसे मैन्युअल रूप से करने की आवश्यकता नहीं है। नीचे देखें कि इसे यहाँ कैसे करना है: blog.netflowdevelopments.com/2012/10/11/…
17

0

समाधान के लिए अलग दृष्टिकोण।

मैं अपने क्लस्टर वातावरण में कई (300 से अधिक) virtualhost होस्ट करता हूं। क्रॉलरों द्वारा मेरे सर्वर को नीचे गिरने से बचाने के लिए, मैं 10 सेकंड के लिए क्रॉल-देरी को परिभाषित करता हूं।

हालाँकि, मैं अपने सभी ग्राहकों को एक निश्चित robots.txt कॉन्फ़िगरेशन के साथ लागू नहीं कर सकता। मैं अपने ग्राहकों को अपने स्वयं के robots.txt का उपयोग करने देता हूं यदि वे करना चाहते हैं।

यदि फ़ाइल मौजूद है, तो पहले मॉड्यूल की जाँच करें। यदि यह मौजूद नहीं है, तो मॉड्यूल मेरे डिफ़ॉल्ट कॉन्फ़िगरेशन को फिर से लिखता है। नीचे कोड उदाहरण ...

आंतरिक को फिर से लिखने के लिए, उपनाम का उपयोग किया जाना चाहिए। एक नए उपनाम को परिभाषित करने के बजाय जो कुछ उपयोगकर्ता पक्ष संघर्षों का कारण बन सकता है, मैं अपने robots.txt को / APACHE / त्रुटि / फ़ोल्डर में स्थित करता हूं, जिसमें पहले से ही डिफ़ॉल्ट कॉन्फ़िगरेशन के रूप में एक उपनाम है।

<Directory /HOSTING/*/*/public_html>
        Options SymLinksIfOwnerMatch
        <Files robots.txt>
                RewriteEngine On
                RewriteCond %{REQUEST_FILENAME} -f [OR]
                RewriteCond %{REQUEST_FILENAME} -d
                RewriteRule (.*) - [L]
                RewriteRule (.*) /error/robots.txt [L]
        </Files>
</Directory>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.