1 个解决方案
先贴上 contorller
层的代码:
/**
* robots txt
*
* @return
*/
@GetMapping("/robots.txt")
public void robotsTxt(HttpServletResponse response) throws IOException {
Writer writer = response.getWriter();
String lineSeparator = System.getProperty("line.separator", "\n");
writer.append("User-agent: *").append(lineSeparator);
writer.append("Disallow:").append("/question/tag/*").append(lineSeparator);
writer.append("Disallow:").append("/user/*").append(lineSeparator);
writer.append("Disallow:").append("/answer/*/edit").append(lineSeparator);
writer.append("Disallow:").append("/question/*/edit").append(lineSeparator);
}
访问接口,我们可以看到输出:
User-agent: *
Disallow: /question/tag/*
Disallow: /user/*
Disallow: /answer/*/edit
Disallow: /question/*/edit
robots.txt 相关文档
robots.txt 文件的格式:
robots 文件往往放置于根目录下,包含一条或更多的记录,这些记录通过空行分开(以 CR,CR/NL, or NL 作为结束符),每一条记录的格式如下所示:
"<field>:<optional space><value><optionalspace>"
在该文件中可以使用 #进行注解,具体使用方法和 UNIX 中的惯例一样。该文件中的记录通常以一行或多行 User-agent 开始,后面加上若干 Disallow 和 Allow 行, 详细情况如下:
User-agent: 该项的值用于描述搜索引擎 robot 的名字。在 "robots.txt" 文件中,如果有多条 User-agent 记录说明有多个 robot 会受到 "robots.txt" 的限制,对该文件来说,至少要有一条 User-agent 记录。如果该项的值设为*,则对任何 robot 均有效,在 "robots.txt" 文件中,"User-agent:*" 这样的记录只能有一条。如果在 "robots.txt" 文件中,加入 "User-agent:SomeBot" 和若干 Disallow、Allow 行,那么名为 "SomeBot" 只受到 "User-agent:SomeBot" 后面的 Disallow 和 Allow 行的限制。
Disallow: 该项的值用于描述不希望被访问的一组 URL,这个值可以是一条完整的路径,也可以是路径的非空前缀,以 Disallow 项的值开头的 URL 不会被 robot 访问。例如 "Disallow:/help" 禁止 robot 访问 /help.html、/helpabc.html、/help/index.html,而 "Disallow:/help/" 则允许 robot 访问 /help.html、/helpabc.html,不能访问 /help/index.html。"Disallow:" 说明允许 robot 访问该网站的所有 url,在 "/robots.txt" 文件中,至少要有一条 Disallow 记录。如果 "/robots.txt" 不存在或者为空文件,则对于所有的搜索引擎 robot,该网站都是开放的。
Allow: 该项的值用于描述希望被访问的一组 URL,与 Disallow 项相似,这个值可以是一条完整的路径,也可以是路径的前缀,以 Allow 项的值开头的 URL 是允许 robot 访问的。例如 "Allow:/hibaidu" 允许 robot 访问 /hibaidu.htm、/hibaiducom.html、/hibaidu/com.html。一个网站的所有 URL 默认是 Allow 的,所以 Allow 通常与 Disallow 搭配使用,实现允许访问一部分网页同时禁止访问其它所有 URL 的功能。
通配符 *
和 $
的说明:
-
"*" 匹配 0 或多个任意字符
-
"$" 匹配行结束符
robots.txt 文件用法举例: