2012-11-13 31 views
6

我可以使用x机器人在.htaccess中noindex,关注'特定页面吗?X-Robots noindex .htaccess中的特定页面

我发现了一些关于noindexing类型的文件的说明,但是我找不到指令给单个页面的noindex,而我迄今为止尝试过的方法没有奏效。

这是我期待NOINDEX页:

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

这是我到目前为止已经试过:

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

感谢您的时间。

+0

'FilesMatch'参数是一个正则表达式,因此您可能必须“转义”一些特殊字符,如'.'和'?'。我现在无法测试,但我想测试''/index\.php\?route=news/headlines$''。 –

+0

在PHP中处理这种情况比在.htaccess中容易得多。你是不是可以在你的'news'控制器的'headlines'动作中调用'header('X-Robots-Tag:noindex,follow')'(如果这确实是一个MVC架构)? – lanzz

回答

8

在.htaccess文件中似乎不可能匹配请求参数。以下是您可以匹配的列表:http://httpd.apache.org/docs/2.2/sections.html

在脚本中执行它会容易得多。如果您在PHP尝试运行:

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

您可以轻松地构建在$ _GET条件,REQUEST_URI等。

0

请注意,您需要启用mod_headers模块来设置标题。

虽然像其他人所说,使用php标签似乎更好。这不行吗?

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工作在(本地)文件,而不是URL。所以它会尝试仅匹配url的/index.php部分。 <location>会更合适,但据我可以从文档中读取,querystrings不允许在这里。所以我结束了上述解决方案(我真的很喜欢这个挑战)。虽然php会是更明显的地方,但这取决于你。

解决方案当然需要mod_rewrite和mod_headers。

+0

也看到这篇文章:http://stackoverflow.com/a/7864666/567986 – Gerben