【问题标题】:How to allow js and css files and images in the robots.txt if I have disallowed parent folders如果我不允许父文件夹,如何在 robots.txt 中允许 js 和 css 文件和图像
【发布时间】:2015-05-20 19:41:14
【问题描述】:

在 google (https://www.google.com/webmasters/tools/mobile-friendly/) 的移动友好网站测试工具上,它说我的网站没有针对移动设备进行优化,但确实如此。原因是 Robots.txt 阻塞了很多资源。我的网站基于 joomla 1.5,但它有一个响应式模板。

这是我的robots.txt文件,但是js、css和图片好像还是被屏蔽了。

User-agent: *

Allow: /templates/
Allow: /*.js
Allow: /*.css
Allow: /*.jpg
Allow: /*.gif
Allow: /*.png

Disallow: /administrator/
Disallow: /cache/
Disallow: /components/
Disallow: /images/
Disallow: /includes/
Disallow: /installation/
Disallow: /language/
Disallow: /libraries/
Disallow: /media/
Disallow: /modules/
Disallow: /plugins/
Disallow: /tmp/
Disallow: /xmlrpc/
Disallow: /AnexosEmpresas/
Disallow: /Formulario/
Disallow: /estadisticas/
Disallow: /installation-xx/
Disallow: /site2/
Disallow: /TemplateMail/
Disallow: /IMPLEMENTACION/
Disallow: /clicks/
Disallow: /LiveZilla/
Disallow: /*format=feed*
Disallow: /*view=category*
Disallow: /*index.php/*
Disallow: /*option=com_sobi2*
Disallow: /*content/category/*
Disallow: /*start=/*
Disallow: /presentacion_ant/
Disallow: /presentacion/
Disallow: /CronJobs/
Disallow: /plantillas/

关于如何解锁所需资源的任何想法??

【问题讨论】:

  • 显而易见的解决方案是简单地删除与您要取消阻止的目录相对应的 Disallow 行。如果有什么阻止您这样做,请澄清问题以包含此信息。
  • 删除禁止行的问题是因为几乎每个文件夹中都有js、css和图像,所以我必须删除几乎所有的“禁止”,这不是一个好主意。我只是希望谷歌能够抓取所有文件夹中的 js、css 和图像。

标签: javascript html css joomla1.5 robots.txt


【解决方案1】:

之所以发生这种情况,是因为 Google 根据路径的长度优先考虑竞争的允许和禁止。路径较长的指令获胜。如果它们的长度相同,则允许胜过禁止。此规则特定于 Google。并非所有爬虫都这样做。

例如,在下面:

User-agent: *
Allow: /a
Disallow: /aa

/aardvark 将被阻止(对于 Google),因为“/aa”比“/a”长,因此 Disallow 优先于 Allow。

在:

User-agent: *
Allow: /aa
Disallow: /a

/aardvark 不会被阻止,因为 Allow 的路径更长。

出于此规则的目的,通配符仅算作一个字符。例如,在这个:

User-agent: *
Allow: /a*
Disallow: /aa

/aardvark 将不会被阻止,因为“/a*”与“/aa”的长度相同(即使“/a*”在功能上与“/a”相同,更短)。

如何解决?

选项 1:

最简单的方法是简单地删除一些 Disallows 并接受 Google 会抓取一些您不希望它们抓取的文件。这大概就是我会做的。这显然是一种折衷方案,但它是唯一能让您的 robots.txt 文件更容易阅读的选项。

选项 2:

为每个可能包含该类型文件的目录明确允许每种文件类型。例如这一行:

Disallow: /plugins/

会变成这样:

Allow: /images/*.jpg
Allow: /plugins/*.js
Allow: /plugins/*.css
Allow: /plugins/*.gif
Allow: /plugins/*.png
Disallow: /plugins/

上面的例子将阻止/plugins/中的任何文件,除了当URL包含“.jpg”、“.js”、“.css”等之一时。

它会阻塞:

http://example.com/plugins/
http://example.com/plugins/somefile.php
http://example.com/plugins/some/path/somefile.php

它不会阻塞:

http://example.com/plugins/somefile.js
http://example.com/plugins/somefile.jpg
http://example.com/plugins/somefile.css
http://example.com/plugins/whatever.php?file=foo.css

您必须为要阻止的每个目录单独执行此操作。

选项 3:

警告:以下是黑客攻击。我已经验证这可行,但它依赖于谷歌未来可能会改变的无证行为。它几乎肯定不会在 Google 以外的爬虫上运行。

您可以使用多个尾随通配符填充 Allows,以使它们比最长的 Disallow 更长:

Allow: /*.js***************
Allow: /*.css**************
Allow: /*.jpg**************
Allow: /*.gif**************
Allow: /*.png**************

# Your existing disallows go here.

这些将覆盖路径少于或等于 20 个字符的任何 Disallow。尾随通配符对匹配的内容没有影响。它们只会增加优先级。

【讨论】:

  • 例如,我怎么能让这个CSS资源给爬虫...example.com/plugins/system/cdscriptegrator/libraries/highslide/…?,因为检查我的网站是否适合移动设备的测试工具说不是因为某些资源像这样一个被屏蔽了。
  • 选项 2 和选项 3 都可以做到这一点。我已经编辑了我的例子,希望能更清楚一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多