2012-11-13 25 views
6

Kann ich eine bestimmte Seite mit x-Robots in .htaccess 'noindex, folgen'?X-Robots noindex spezifische Seite in .htaccess

Ich habe einige Anweisungen für noindexing Arten von Dateien gefunden, aber ich finde keine Anweisung zu noindex eine einzelne Seite, und was ich bisher versucht habe, hat nicht funktioniert.

Dies ist die Seite, die ich noindex freu:

http://www.examplesite.com.au/index.php?route=news/headlines 

Das ist, was ich bisher versucht habe: für Ihre Zeit

<FilesMatch "/index.php?route=news/headlines$"> 
Header set X-Robots-Tag "noindex, follow" 
</FilesMatch> 

Dank.

+0

'FilesMatch' ist ein regulärer Ausdruck, daher müssen Sie einige Sonderzeichen wie' .' und '?' Wahrscheinlich "flüchten". Ich kann es jetzt nicht testen, aber ich möchte "/index\.php\?route=news/headlines$" testen. –

+0

Die Handhabung dieses Falles wäre in PHP viel einfacher als in '.htaccess'; kannst du nicht 'header ('X-Robots-Tag: noindex, follow')' nennen, wahrscheinlich in deiner 'headlines' Aktion in deinem' news' Controller (wenn das tatsächlich eine MVC Architektur ist)? – lanzz

Antwort

8

Es scheint unmöglich zu sein, die Anforderungsparameter innerhalb einer .htaccess-Datei abzugleichen. Hier ist eine Liste von dem, was Sie gegen übereinstimmen können: http://httpd.apache.org/docs/2.2/sections.html

Es wird viel einfacher sein, es in Ihrem Skript zu tun. Wenn Sie auf PHP Versuch ausgeführt werden:

header('X-Robots-Tag: noindex, follow'); 

Sie leicht Bedingungen auf $ _GET bauen können, REQUEST_URI und so weiter.

0

Beachten Sie, dass Sie das Modul mod_headers aktivieren müssen, um die Header festzulegen.

Obwohl wie andere gesagt haben, scheint es besser, das PHP-Tag zu verwenden. Funktioniert das nicht?

4
RewriteEngine on 
RewriteBase/

#set env variable if url matches 
RewriteCond %{QUERY_STRING} ^route=news/headlines$ 
RewriteRule ^index\.php$ - [env=NOINDEXFOLLOW:true] 

#only sent header if env variable set 
Header set X-Robots-Tag "noindex, follow" env=NOINDEXFOLLOW 

Filesmatch arbeitet auf (local) Dateien, nicht Urls. Es würde also versuchen, nur den /index.php Teil der URL zu finden. <location> wäre angemessener, aber soweit ich in der Dokumentation lesen kann, sind Querystrings hier nicht erlaubt. So endete ich mit der obigen Lösung (ich mochte diese Herausforderung wirklich). Obwohl PHP wäre der offensichtlichere Ort, um dies zu setzen, aber das liegt an Ihnen.

Die Lösung erfordert natürlich mod_rewrite und mod_headers.

+0

Siehe auch diesen Beitrag: http://Stackoverflow.com/a/7864666/567986 – Gerben