मैं केवल उप-डोमेन को हटाने के लिए robots.txt का उपयोग कैसे कर सकता हूं?


10

मेरे कोड बेस कई वातावरण (लाइव, मचान, देव) और उप-डोमेन (बीच साझा किया जाता staging.example, dev.example, आदि) और केवल दो क्रॉल करने की अनुमति दी जानी चाहिए (यानी। www.exampleऔर example)। सामान्य रूप से मैं संशोधित /robots.txtऔर जोड़ना चाहूंगा Disallow: /, लेकिन साझा कोड आधार के कारण मैं /robots.txtसभी (उप) डोमेन को प्रभावित किए बिना संशोधित नहीं कर सकता ।

किसी भी विचार कैसे इसके बारे में जाने के लिए?

जवाबों:


13

आप robots.txtउपडोमेन के आधार पर एक अलग फ़ाइल परोस सकते हैं जिसके माध्यम से साइट तक पहुँचा जा सकता है। अपाचे पर ऐसा करने का एक तरीका आंतरिक रूप से .htaccess में mod_rewrite का उपयोग करके URL को फिर से लिखना है। कुछ इस तरह:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.)?example\.com$ [NC]
RewriteRule ^robots\.txt$ robots-disallow.txt [L]

उपरोक्त कहा गया है कि सभी अनुरोधों के लिए robots.txtजहां मेजबान कुछ भी है www.example.comया इसके अलावा example.com, फिर आंतरिक रूप से अनुरोध को फिर से लिखना है robots-disallow.txt। और robots-disallow.txtफिर Disallow: /निर्देश शामिल होंगे ।

यदि आपके पास अपनी .htaccess फ़ाइल में अन्य निर्देश हैं तो इस निर्देश को किसी भी रूटिंग निर्देशों से पहले शीर्ष के समीप होना होगा।


मैं उसी उपाय के बारे में सोच रहा था। मुझे यकीन नहीं था कि अगर वहाँ कुछ और है, लेकिन दिन के अंत में, अगर यह है, तो यह कि मेरा काम क्या होगा)
एलेक्सस

1
यदि दोनों उप-डोमेन / होस्ट बहुत ही webspace / कोड बेस की ओर इशारा करते हैं, तो robots.txt "मानक" में कुछ भी नहीं है जो इसे नियंत्रित कर सकता है, यदि आप जो सुझाव दे रहे हैं। बॉट बस अनुरोध करने जा रहा है sub.example.com/robots.txt, इसलिए आपको उपडोमेन के आधार पर एक अलग प्रतिक्रिया देने के लिए कुछ करने की आवश्यकता होगी । आपको mod_rewrite का उपयोग करने की आवश्यकता नहीं है, लेकिन यह एक तकनीक है जिसे मैंने कई बार देखा है। यदि robots.txtगतिशील रूप से उत्पन्न होता है, तो आप सर्वर-साइड कोड (जैसे PHP) में प्रतिक्रिया को बदल सकते हैं।
Mrhhite

उपयोग करने का एक विकल्प robots.txtक्रॉलिंग को रोकने के बजाय क्रॉलिंग के बजाय X-Robots-Tag: noindexHTTP प्रतिक्रिया हेडर भेजकर हो सकता है जब ऐसे सबडोमेन एक्सेस किए जाते हैं (जो कि .htaccess में भी किया जा सकता है)। हालांकि मुझे लगता है कि रेंगने को रोकना शायद बेहतर है। (?)
MrWhite

1

robots.txt केवल तभी काम करता है जब यह जड़ में मौजूद हो।

आपको robots.txtप्रत्येक उपडोमेन वेबसाइट के लिए एक अलग से अपलोड करने की आवश्यकता है , जहां से इसे एक्सेस किया जा सकता है http://subdomain.example.com/robots.txt

नीचे दिए गए कोड को इसमें जोड़ें robots.txt

User-agent: *
Disallow: /

और दूसरा तरीका यह है कि आप <META>सभी पृष्ठों में एक रोबोट टैग सम्मिलित कर सकते हैं ।

<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">

3
लेकिन ओपी पहले से ही बताता है: "आम तौर पर मैं संशोधित /robots.txtऔर जोड़ूंगा Disallow: /, लेकिन साझा कोड आधार के कारण मैं /robots.txtसभी (उप) डोमेन को प्रभावित किए बिना संशोधित नहीं कर सकता ।"
MrWhite

0

मैं html पृष्ठ से मेटा टैग हटाता हूँ और गतिशील रूप से आपके उपडोमेन पर निर्भर करता हूँ। उदाहरण के लिए, हम उप डोमेन देव का उपयोग करते हैं। विकास के लिए। पगेलोड घटना में हमारे पास यह है:

  ' Check if domain is DEV or PROD and set robots accordingly meta tag in head
  Dim metatag As HtmlMeta = New HtmlMeta
  metatag.Attributes.Add("name", "robots")
  If CurrentURL.Contains("dev.advertise-it") Then
    metatag.Attributes.Add("content", "NOINDEX, NOFOLLOW")
  Else
    metatag.Attributes.Add("content", "INDEX, FOLLOW")
  End If
  Page.Header.Controls.Add(metatag)

हालांकि यह रेंगने से नहीं रोकता है , जो ओपी की आवश्यकता प्रतीत होगी।
MrWhite
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.