WordPress · Tag, author, date and attachment URLs
WordPress builds pages you never wrote. Every tag, author, month and uploaded image gets its own URL, and most of them hold a list of one or two posts or a single image with no text. Google crawls them, indexes some, and spends crawl budget on them instead of your real content.
You can't stop core from generating these URLs, but you control what each one returns: an indexable page, a noindex page, a redirect or a 404. The work is deciding which, applying it, and proving it worked.
What can go wrong
These are the URL types WordPress generates on its own, and the problem each one usually causes.
| URL type | Example | Typical problem |
|---|---|---|
| Tag archive | /tag/seo-tips/ | Hundreds of tags, most with 1 or 2 posts |
| Author archive | /author/admin/ | Duplicates the blog index on single-author sites, exposes the admin username |
| Date archive | /2024/03/ | Duplicates category and blog listings |
| Attachment page | /my-post/image-1/ | One image, no text, sometimes outranks the post |
| Uncategorized | /category/uncategorized/ | Default category nobody meant to publish |
| Paginated archive | /category/news/page/14/ | Deep pages with no unique value, but they link to older posts |
| Internal search | /?s=keyword | Infinite URLs if linked or spammed |
Since WordPress 6.4, new installs disable attachment pages by default, but sites upgraded from older versions often still serve them.
What to check
For each archive type, you want four numbers: how many URLs exist, how many are indexable, how many posts each holds, and how many are in the sitemap.
| Check | Healthy result |
|---|---|
| Archive URL count vs post count | Archives are a small share of crawlable URLs |
| Posts per tag archive | Indexable tags hold 5 or more posts (pick your own threshold) |
| Meta robots on thin archives | noindex present in the HTML, visible to a logged-out crawler |
| robots.txt | Thin archives are not disallowed, or Google can't see the noindex |
| Sitemap | Noindexed archives are excluded from the sitemap |
| Attachment URLs | 301 to the parent post or the file, not 200 |
| Internal links | Main navigation doesn't link to noindexed archives |
How to run the checks
- Crawl with archives included. Don't exclude /tag/, /author/ or date paths in SiteAud!tLint, so the audit can count them.
- Filter URLs by pattern. Group by /tag/, /author/, /category/, /YYYY/ and attachment slugs. Note the total and the indexable count for each.
- Sort by word count. Thin archives cluster at the bottom. Cross-check with Duplicate Content Checker, which flags archives that repeat the same post excerpts.
- Compare against the sitemap. Any noindexed archive still listed in the sitemap sends Google mixed signals.
- Check Search Console. Under Pages, filter indexed URLs by /tag/ or /author/ to see which thin archives Google actually kept.
- Save the audit as your baseline before changing anything.
How to identify the scope
Decide per archive type, not per URL. One rule for all tags is easier to maintain and verify than 300 individual decisions.
| Archive type | Best default | Exception |
|---|---|---|
| Category | Keep indexed | Noindex Uncategorized, or rename it |
| Tag | Noindex, follow | Keep tags that work as real topic hubs |
| Author (single author) | Disable or 301 to an About page | Multi-author sites with real bios: keep |
| Date | Noindex or disable | News sites that rely on date browsing |
| Attachment | 301 to the parent post | None in most cases |
| Paginated /page/2/ and deeper | Leave indexable, self-canonical | Don't noindex: it cuts crawl paths to older posts |
| Internal search | Noindex (WordPress core default) | Never link to search results |
How to apply the fix
With an SEO plugin (preferred): Yoast, Rank Math and AIOSEO all have per-taxonomy index toggles, author and date archive switches, and an attachment redirect setting. Use these instead of code, so only one layer writes robots tags.
Without a plugin: add this to your child theme's functions.php or a code snippets plugin, not header.php.
add_action( 'wp_head', function () {
if ( is_author() || is_date() || is_tag() || is_attachment() ) {
echo '<meta name="robots" content="noindex, follow">' . "\n";
}
} );
It fixes the three bugs in the commonly shared forum version: it uses || instead of |, echo instead of _e(), and wp_head instead of header.php, which theme updates overwrite. It also leaves paginated pages indexable on purpose.
How to validate the fix
- Purge every cache, then recrawl with the same settings as the baseline.
- Compare in Audit Comparison: the thin archive URLs should now show noindex, or 301 for attachments.
- Check there's only one robots meta tag per page. A plugin plus custom code creates two conflicting tags.
- Confirm noindexed archives left the sitemap.
- Confirm posts and pages are still indexable. Filter the comparison for any post URL that changed index status: the count should be zero.
- In Search Console, watch the indexed count for /tag/ and /author/ fall over the next weeks. Removal happens on Google's crawl schedule.
Downloadable checklist
Tick items as you go, then download the list as CSV for a spreadsheet or ticket, or print it and save as PDF. Your ticks are included in the download.
Common mistakes
- Blocking archives in robots.txt as well. Google can't fetch the page, so it never sees the noindex and the URL stays indexed. Use one or the other, and noindex first.
- Redirecting author archives to the homepage. Google often treats mass redirects to the homepage as soft 404s. Redirect to an About page, or disable the archive so it returns 404.
- Noindexing /page/2/ and deeper. It removes the crawl path to older posts linked only from those pages.
- Relying on Search Console removals. A removal request hides a URL for about six months. Without a noindex or redirect in place, it comes back.
- Editing header.php in the parent theme. The next theme update wipes the change silently. Use a child theme, a snippets plugin, or your theme's hook feature.
- Plugin settings plus custom code. Two robots tags on one page, sometimes contradicting each other.
- Deleting tags without redirects. Tag URLs with backlinks start returning 404. Check Backlink Audit before merging or deleting tags.
Related resources
The goal isn't zero archives
It's an index where every archive Google keeps is one a visitor would want to land on. Count them with a crawl, set one rule per archive type, and recrawl to prove the rule took effect.