artists: prevent Google from indexing banned artists.

Prevent search engines from indexing artist pages, wiki pages, and tag
searches for banned artists.
This commit is contained in:
evazion
2021-02-07 22:45:36 -06:00
parent e23f09235e
commit 7b4bab54af
8 changed files with 38 additions and 3 deletions

View File

@@ -362,6 +362,10 @@ module ApplicationHelper
end
end
def noindex
content_for(:html_header, tag.meta(name: "robots", content: "noindex"))
end
def atom_feed_tag(title, url = {})
content_for(:html_header, auto_discovery_link_tag(:atom, url, title: title))
end

View File

@@ -122,6 +122,7 @@ module PostSets
def hide_from_crawler?
return true if current_page > 50
return true if artist.present? && artist.is_banned?
return false if query.is_empty_search? || query.is_simple_tag? || query.is_metatag?(:order, :rank)
true
end

View File

@@ -1,3 +1,5 @@
<% noindex if @artist.is_banned? %>
<%= render layout: "show" do %>
<div>
<%= render "summary", artist: @artist %>

View File

@@ -14,9 +14,7 @@
<% canonical_url root_url(host: Danbooru.config.hostname) %>
<% end %>
<% if @post_set.hide_from_crawler? %>
<meta name="robots" content="nofollow,noindex">
<% end %>
<% noindex if @post_set.hide_from_crawler? %>
<% if @post_set.has_explicit? %>
<meta name="rating" content="adult">

View File

@@ -1,6 +1,10 @@
<% page_title "#{@wiki_page.pretty_title.titleize} Wiki" %>
<% meta_description DText.excerpt(@wiki_page.body) %>
<% if @wiki_page.artist.present? && @wiki_page.artist.is_banned? %>
<% noindex %>
<% end %>
<%= render "secondary_links" %>
<%= render "sidebar" %>

View File

@@ -65,6 +65,14 @@ class ArtistsControllerTest < ActionDispatch::IntegrationTest
assert_response :success
assert_select ".artist-wiki", count: 0
end
should "mark banned artists as noindex" do
@artist = create(:artist, is_banned: true)
get artist_path(@artist.id)
assert_response :success
assert_select "meta[name=robots][content=noindex]"
end
end
context "new action" do

View File

@@ -112,6 +112,16 @@ class PostsControllerTest < ActionDispatch::IntegrationTest
assert_select "#view-artist-link", count: 0
end
should "render for a banned artist tag" do
artist = create(:artist, is_banned: true)
create(:post, tag_string: artist.name)
get posts_path, params: { tags: artist.name }
assert_response :success
assert_select "#show-excerpt-link", count: 1, text: "Artist"
assert_select "meta[name=robots][content=noindex]"
end
should "render for a tag with a wiki page" do
create(:post, tag_string: "char:fumimi", rating: "s")
get posts_path, params: { tags: "fumimi" }

View File

@@ -121,6 +121,14 @@ class WikiPagesControllerTest < ActionDispatch::IntegrationTest
get wiki_page_path("....xml")
assert_response :success
end
should "mark banned artists as noindex" do
@artist = create(:artist, name: @wiki_page.title, is_banned: true)
get wiki_page_path(@wiki_page.title)
assert_response :success
assert_select "meta[name=robots][content=noindex]"
end
end
context "show_or_new action" do