防止机器人刮擦Coffeescript文件的路由错误

时间:2015-02-13 13:30:28

标签: ruby-on-rails robots.txt

在我的咖啡脚本文件中,我有这个:

$('#map_of_users').html("<iframe src='/map/" + $(this).data('user_id') + "></iframe>"

Bots正在抓取该文件并认为这是一个要检出的网址,所以我在我的日志中收到了一个类似于此的路由错误

No route matches [GET] "/map/%22+$(this).data(%22user_id%22)"

我确实希望跟踪路由错误,因此我无法忽略所有这些错误,但是这些无聊的路由错误会导致大量不必要的时间。

也许一个快速的解决方案是将所有coffeescript文件添加到robots.txt文件或app / assets / javascripts文件中的所有内容。推荐什么?

注意:我还发布了一个不正确的解决方案,试图在routes.rb文件中修复此问题,并且我想知道它为什么不起作用。

1 个答案:

答案 0 :(得分:0)

注意:此解决方案无效。我发布了它,以听取有关它为什么不起作用的反馈。

如果你把它放在routes.rb ...

match '/map/%22+$(this).data(%22user_id%22)', :to => 'shared#unauthorized', via: [:get, :post]

转到http://localhost:3000/map/%22+ $(this).data(%22user_id%22)仍会产生此路由错误:

No route matches [GET] "/map/%22+$(this).data(%22user_id%22)"

我猜测路由器没有像浏览器那样读取%22(&#34;)。有没有办法在路由器中进行补偿?

如果我跑#34;耙路线&#34;在控制台中,它显示正在读取路径:

GET|POST /map/%2522+$(this).data(%2522user_id%2522)(.:format)

通过将%转换为ASCII表示%25,Rails可能是双重编码。可以预防吗?