Received: from mail.netlandish.com (mail.netlandish.com [174.136.98.166])
	by code.netlandish.com (Postfix) with ESMTP id 6FD3A381
	for <~netlandish/links-dev@lists.code.netlandish.com>; Thu, 29 May 2025 17:35:48 +0000 (UTC)
Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=209.85.219.175; helo=mail-yb1-f175.google.com; envelope-from=peter@netlandish.com; receiver=<UNKNOWN> 
Authentication-Results: mail.netlandish.com;
	dkim=pass (1024-bit key; unprotected) header.d=netlandish.com header.i=@netlandish.com header.b=KonQ/Hat
Received: from mail-yb1-f175.google.com (mail-yb1-f175.google.com [209.85.219.175])
	by mail.netlandish.com (Postfix) with ESMTP id 743DA1D6432
	for <~netlandish/links-dev@lists.code.netlandish.com>; Thu, 29 May 2025 17:36:12 +0000 (UTC)
Received: by mail-yb1-f175.google.com with SMTP id 3f1490d57ef6-e7d9de68326so962231276.2
        for <~netlandish/links-dev@lists.code.netlandish.com>; Thu, 29 May 2025 10:36:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=netlandish.com; s=google; t=1748540171; x=1749144971; darn=lists.code.netlandish.com;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=uE80v2UJ5Z3QeFzp01U90SuCLjC+uxuNt8+++0htYNk=;
        b=KonQ/HatecGj7nTu3OiiMVptlSl5QSXvts80FUD81chEjeq+33l+J9Umz6V3U5M8MT
         G9OlzCjYRluYTCM39PsBQQv500aw2NeskmouuV9PmVxnNnfpbQAUvN91Dz3CrDvXJ0Hf
         A7xhIT41KHMkdXEnwlj+Wsycax1wihPnBcXQw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1748540171; x=1749144971;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=uE80v2UJ5Z3QeFzp01U90SuCLjC+uxuNt8+++0htYNk=;
        b=oHaRUtEP0Tz8ZdCMlE+Mm6oT+Jmp90Vvj8tfRNGSEc1QdwGlyGbaaM6sYvFZVm/Q2l
         ugHoBs2UvACiHr3lJm01hGHr2h7uOoUZJGKkFiiSS/ERiH5Pc9LnTpzLAJvB1ppjWKj8
         noZIvmYMmRNynwvAizXCJmA+BQ8T87nn7sRLXKead3tzSfujAIz1YzJg85ICRKL+N1t2
         SoX7ntL/nOTC/ABF/Ca8xkdoxBBnITxqkNmdJWM9NMzYxXfSL6lep4dksIHzle551Ihn
         fsCIKaDinC2YV0wjcyDH3AUMSxQ0zY45NbhLekN7jn5IRCu+z2JK4jXd9sXjQBAu+a0g
         f3/w==
X-Gm-Message-State: AOJu0YwkBt9sbKsjDI29o+LmmGRnSa9t4La/6WqVBOt5PkbPG0eG+mXJ
	7Wk6X3c85K2hMES3RVquzWnzeRZM71Is1chPnAISRTS1/7is11BFeiHAvJoBEKL6gWNtxb02O7h
	drnK16+Yz/Q==
X-Gm-Gg: ASbGncvAFvUGGMNDuOCj5EtGJFhPBhEcnFvhjfdTL/AoQ2/JZLmiMykb88W0h6LzCSW
	BHG5tLjVGlWxjJsv4DCQ8birRNGqW5DHQbJF0042UgdUmlq9XEukHFGCfsbVhK0acg2Tnbkct/h
	SI60FKviTyhcmrn+SW9TKiGMPW6vtXzaRgFoJpuV2ImBohUBQfuMnFia+6YGzVSvnM7xXI06YLZ
	j/UMe5/ulU4JNgJE2+ogWoBgh8yhgwjxos6T9k0QBb58xytnfsrYcas27nk8TY0bBHHPkUdG1Yr
	pUcI9RoUf6Ug+vreXglLXEsoNGV9QdoZVfDui1y2whFtfeUEMaM=
X-Google-Smtp-Source: AGHT+IFxy0R24iaat/QHS2wndf9lA2Y5/csYGhNOUKA6nQa+7/Uw77gEJShBkwVXuLOvp7vxmcRfSQ==
X-Received: by 2002:a05:6902:2101:b0:e7f:6edc:9a3f with SMTP id 3f1490d57ef6-e7f821723admr672703276.38.1748540171282;
        Thu, 29 May 2025 10:36:11 -0700 (PDT)
Received: from localhost ([2803:2d60:1118:5ee:b5c3:4a6a:10b:caac])
        by smtp.gmail.com with ESMTPSA id 3f1490d57ef6-e7f73500ca4sm412316276.43.2025.05.29.10.36.10
        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
        Thu, 29 May 2025 10:36:10 -0700 (PDT)
From: Peter Sanchez <peter@netlandish.com>
To: ~netlandish/links-dev@lists.code.netlandish.com
Cc: Peter Sanchez <peter@netlandish.com>
Subject: [PATCH links] Adding rel="nofollow" to external links to avoid the SEO spammers.
Date: Thu, 29 May 2025 11:36:06 -0600
Message-ID: <20250529173608.19927-1-peter@netlandish.com>
X-Mailer: git-send-email 2.47.2
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Changelog-changed: Links to external sites will now have rel="nofollow"
  to help avoid the site from becoming a spam haven.
---
 templates/feed.html        | 2 +-
 templates/link_detail.html | 4 ++--
 templates/link_list.html   | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/templates/feed.html b/templates/feed.html
index 9c6aa7a..b3cbb19 100644
--- a/templates/feed.html
+++ b/templates/feed.html
@@ -52,7 +52,7 @@
       <article>
         <div class="d-flex items-center">
           <h3 class="is-marginless mr-1">
-            <a class="text-dark" href="{{.URL}}" target="_blank">{{truncate .Title 60}}</a>
+            <a class="text-dark" href="{{.URL}}" rel="nofollow" target="_blank">{{truncate .Title 60}}</a>
 	    {{ if showCounter . }}<a href="{{ reverse "core:bookmarks" .BaseURLHash }}" class="button outline primary tag tag-popular is-small">{{if $.isPopular}}{{ .Counter }}{{ else }}{{ .BaseURLCounter }}{{ end }}</a>{{ end }}
           </h3>
         </div>
diff --git a/templates/link_detail.html b/templates/link_detail.html
index 08ca228..56cb1a2 100644
--- a/templates/link_detail.html
+++ b/templates/link_detail.html
@@ -10,7 +10,7 @@
   <header class="d-flex flex-row justify-between items-center">
     <div class="d-flex flex-row items-center">
       <div class="ml-1">
-        <h2><a class="text-dark" href="{{reverse "core:link_redirect" .link.Hash}}">{{.link.Title}}</a></h2>
+        <h2><a class="text-dark" href="{{reverse "core:link_redirect" .link.Hash}}" rel="nofollow" target="_blank">{{.link.Title}}</a></h2>
         <div class="d-flex flex-row items-center">
             {{if .IsPrivate}}
             <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" style="width:20px; margin-right: 7px;">
@@ -29,7 +29,7 @@
     </div>
   </header>
   {{ if eq .link.Type "LINK" }}
-  <p><a href="{{reverse "core:link_redirect" .link.Hash}}" target="_blank">{{stripCommonProtocol .link.URL}}</a></p>
+  <p><a href="{{reverse "core:link_redirect" .link.Hash}}" rel="nofollow" target="_blank">{{stripCommonProtocol .link.URL}}</a></p>
   {{end}}
   <p>{{ htmlSafe (newlinebr .link.Description) }}</p>
   {{if .link.Tags}}
diff --git a/templates/link_list.html b/templates/link_list.html
index de514ae..797285a 100644
--- a/templates/link_list.html
+++ b/templates/link_list.html
@@ -119,7 +119,7 @@
               {{end}}
           {{end}}
           <h3 class="is-marginless mr-1">
-            <a class="text-dark" href="{{.URL}}" target="_blank">{{truncate .Title 60}}</a>
+            <a class="text-dark" href="{{.URL}}" rel="nofollow" target="_blank">{{truncate .Title 60}}</a>
 	      {{ if not $.hideSaveCount }}{{ if showCounter . }}<a href="{{ if $.isPopular }}{{ reverse "core:bookmarks" .Hash }}{{ else }}{{ reverse "core:bookmarks" .BaseURLHash }}{{ end }}" class="button outline primary tag tag-popular is-small">{{if $.isPopular}}{{ .Counter }}{{ else }}{{ .BaseURLCounter }}{{ end }}</a>{{ end }}{{ end }}
           </h3>
           {{if $.isOrgLink}}
@@ -171,7 +171,7 @@
 
                 <!-- Archived -->
                 {{if .ArchiveURL}}
-                <a class="icon-link tooltip-link" href="{{.ArchiveURL}}" target="_blank" data-tooltip="{{$.pd.Data.archive}}">
+                <a class="icon-link tooltip-link" href="{{.ArchiveURL}}" rel="nofollow" target="_blank" data-tooltip="{{$.pd.Data.archive}}">
                     <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6" style="width:20px;">
                         <path stroke-linecap="round" stroke-linejoin="round" d="m20.25 7.5-.625 10.632a2.25 2.25 0 0 1-2.247 2.118H6.622a2.25 2.25 0 0 1-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125Z" />
                     </svg>
-- 
2.47.2