2012-11-13 10 views
6

Czy mogę "noindex, wykonaj" określonej strony za pomocą x roboty w. Htaccess?X-roboty noindex strona w. Htaccess

Znalazłem kilka instrukcji dla typów plików noindexing, ale nie mogę znaleźć instrukcji dla noindex na jednej stronie, a to, co próbowałem do tej pory, nie zadziałało.

To jest strona Czekam na noindex:

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

To co próbowałem dotąd:

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

Dziękuję za poświęcony czas.

+0

Argument "FilesMatch" jest wyrażeniem regularnym, więc prawdopodobnie trzeba "uciec" z niektórych znaków specjalnych, takich jak '.' i'? '. Nie mogę tego teraz przetestować, ale chciałbym przetestować '" /index\.php\?route=news/headlines$ "'. –

+0

Obsługa tego przypadku byłaby znacznie łatwiejsza w PHP niż w '.htaccess'; nie możesz po prostu wywołać 'header ('X-Robots-Tag: noindex, follow')', prawdopodobnie w akcji 'headlines' w twoim kontrolerze' news' (jeśli to rzeczywiście jest architektura MVC)? – lanzz

Odpowiedz

8

Wydaje się niemożliwe, aby dopasować parametry żądania z pliku .htaccess. Oto lista elementów, które można dopasować: http://httpd.apache.org/docs/2.2/sections.html

O wiele łatwiej będzie to zrobić w scenariuszu. Jeśli używasz PHP, spróbuj:

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

Możesz łatwo budować warunki na $ _GET, REQUEST_URI i tak dalej.

0

Należy pamiętać, że do ustawienia nagłówków potrzebny będzie moduł mod_headers.

Chociaż, jak powiedzieli inni, lepiej użyć tagu php. Czy to nie działa?

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 działa na pliki (lokalne), a nie adresów URL. Próbowałby więc dopasować tylko część adresu url /index.php. <location> byłoby bardziej odpowiednie, ale o tyle, o ile mogę przeczytać z dokumentacji, nie można tutaj stosować querystringów. Więc skończyło się na powyższym rozwiązaniu (bardzo podobało mi się to wyzwanie). Chociaż php byłoby bardziej oczywistym miejscem do umieszczenia tego, ale to zależy od ciebie.

Rozwiązanie wymaga oczywiście mod_rewrite i mod_headers.

+0

Zobacz także ten wpis: http://stackoverflow.com/a/7864666/567986 – Gerben