2009-09-29 15 views
7

come non consentire tutti gli URL dinamici nel file robots.txtcome non consentire tutti gli URL dinamici robots.txt

Disallow: /?q=admin/ 
Disallow: /?q=aggregator/ 
Disallow: /?q=comment/reply/ 
Disallow: /?q=contact/ 
Disallow: /?q=logout/ 
Disallow: /?q=node/add/ 
Disallow: /?q=search/ 
Disallow: /?q=user/password/ 
Disallow: /?q=user/register/ 
Disallow: /?q=user/login/ 

voglio non consentire tutte le cose che iniziano con /? Q =

+0

Secondo [this] (http://smackdown.blogsblogsblogs.com/2008/05/23/googlebot-creates-pages-instead-of-simply-indexing-them-new-form-crawling-algo-goes -bad /), non consentire una buona ricerca delle pagine di ricerca. Quindi questa domanda è molto pertinente e non dovrebbe essere chiusa. –

risposta

11

La risposta alla tua domanda è quello di utilizzare

Disallow: /?q= 

La migliore (attualmente accessibile) sorgente sul file robots.txt che ho trovato è in Wikipedia. (La fonte presumibilmente definitiva è http://www.robotstxt.org, ma il sito è inattivo al momento.)

Secondo la pagina di Wikipedia, lo standard definisce solo due campi; UserAgent: e Disallow :. Il campo Disallow: non consente i caratteri jolly espliciti, ma ogni percorso "non consentito" è in realtà un prefisso del percorso; Ad esempio, corrispondente a qualsiasi percorso che inizia con il valore specificato.

Il campo Consenti: è un'estensione non standard e qualsiasi supporto per caratteri jolly espliciti in Disallow sarebbe un'estensione non standard. Se li usi, non hai il diritto di aspettarti che un (legittimo) web crawler li capisca.

Non si tratta di crawler "intelligenti" o "stupidi": si tratta di conformità agli standard e interoperabilità. Ad esempio, qualsiasi web crawler che facesse cose "intelligenti" con caratteri jolly espliciti in "Disallow:" sarebbe un male per (ipotetici) file robots.txt in cui quei caratteri erano destinati a essere interpretati letteralmente.

+0

@stephen grazie per la risposta dettagliata – pmarreddy

+0

Un risultato elevato in google per capire che robotos.txt stava suggerendo che le espressioni regolari funzionassero - non le trovavo in grado di usare espressioni regolari. – landed

2

Come ha detto Paolo un molti interpreti di robots.txt non sono troppo luminosi e potrebbero non interpretare le wild card nel percorso in cui intendete usarli.

Detto questo, alcuni crawler tentano di ignorare le pagine dinamiche da soli, preoccupandosi che possano rimanere intrappolati in loop infiniti su collegamenti con URL diversi. Presumo che tu stia facendo questa domanda perché affronta un coraggioso crawler che sta cercando di accedere a quei percorsi dinamici.

In caso di problemi con crawler specifici, è possibile provare a indagare in modo specifico su come funziona il crawler eseguendo una ricerca nella sua capacità robots.txt e specificando una specifica sezione robots.txt per esso.

Se in genere si desidera solo disabilitare tale accesso alle proprie pagine dinamiche, è consigliabile rivedere il proprio design robots.txt.

Nella maggior parte dei casi, le "pagine" di gestione dei parametri dinamici si trovano in una directory specifica o in un set specifico di directory. Questo è il motivo per cui è normalmente molto semplice semplicemente Disabilitare:/cgi-bin o/app ed essere fatto con esso.

Nel tuo caso sembra che tu abbia mappato la radice a un'area che gestisce i parametri. Si potrebbe voler invertire la logica di robots.txt e dire qualcosa del tipo:

User-agent: * 
Allow: /index.html 
Allow: /offices 
Allow: /static 
Disallow:/

In questo modo la vostra lista Consenti avrà la precedenza l'elenco Disallow aggiungendo in particolare quello che i crawler dovrebbe indice. Nota che non tutti i crawler sono creati uguali e potresti voler perfezionare quel file robots.txt in un secondo momento aggiungendo una sezione specifica per qualsiasi crawler che ancora si comporta male.

+1

@Grookoo: "Permetti:" non standard.Un crawler che lo ignora non si comporta male; è semplicemente conforme alla specifica robots.txt. –

Problemi correlati