<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>External Link SEO - Tag - Technical Manual</title><link>https://manual.toulan.fun/en/tags/external-link-seo/</link><description>External Link SEO - Tag - Technical Manual</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><lastBuildDate>Wed, 10 Sep 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://manual.toulan.fun/en/tags/external-link-seo/" rel="self" type="application/rss+xml"/><item><title>A Comprehensive Guide to the HTML &lt;a&gt; Tag's rel Attribute: Safety, Privacy, and SEO Best Practices</title><link>https://manual.toulan.fun/en/html-a-rel-attribute-guide/</link><pubDate>Wed, 10 Sep 2025 00:00:00 +0000</pubDate><author><name>HenryZ</name><uri>https://nodewee.github.io/</uri><email>nodewee@gmail.com</email></author><guid>https://manual.toulan.fun/en/html-a-rel-attribute-guide/</guid><description><![CDATA[<p>Hi, I&rsquo;m HenryZ.<br>
This article discusses a pitfall that every front-end developer has encountered but often glosses over: the <code>rel</code> attribute of the <code>&lt;a&gt;</code> tag.<br>
After reading this, you&rsquo;ll be able to tell yourself: &ldquo;From now on, whenever I use <code>target=&quot;_blank&quot;</code>, I&rsquo;ll first write <code>noopener</code> and then add others as needed.&rdquo;</p>
<h2 id="1-understand-two-things-first" class="headerLink">
    <a href="#1-understand-two-things-first" class="header-mark"></a>1. Understand Two Things First</h2><table>
  <thead>
      <tr>
          <th>Question</th>
          <th>One-sentence Answer</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>What is <code>rel</code> for?</td>
          <td>It tells the browser &ldquo;what my relationship with that link is&rdquo; and decides whether to hand over information from the previous page.</td>
      </tr>
      <tr>
          <td>Why is it always used with <code>target=&quot;_blank&quot;</code>?</td>
          <td>A new tab will get the <code>window.opener</code> pointer, which can tamper with the source page in reverse—this is called <strong>reverse tabnabbing</strong>.</td>
      </tr>
  </tbody>
</table>
<h2 id="2-the-safety-duo-noopener--noreferrer" class="headerLink">
    <a href="#2-the-safety-duo-noopener--noreferrer" class="header-mark"></a>2. The Safety Duo: noopener / noreferrer</h2><table>
  <thead>
      <tr>
          <th>Attribute</th>
          <th>What It Does</th>
          <th>Additional Effect</th>
          <th>Recommended Scenario</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>noopener</code></td>
          <td>Cuts off <code>window.opener</code></td>
          <td>None</td>
          <td>Add to all <code>target=&quot;_blank&quot;</code> links to ensure safety first</td>
      </tr>
      <tr>
          <td><code>noreferrer</code></td>
          <td>Does not send the <code>Referer</code> request header</td>
          <td>Modern browsers also cut off <code>window.opener</code></td>
          <td>Use when you don&rsquo;t want the target site to know where you&rsquo;re coming from</td>
      </tr>
  </tbody>
</table>
<blockquote>
  <p><strong>What does &ldquo;cutting off <code>window.opener</code>&rdquo; mean?</strong><br>
By default, the <code>window.opener</code> in a new tab points to the page that opened it.<br>
With this &ldquo;key to go back,&rdquo; the new page can:</p>]]></description></item></channel></rss>