SEO
Heading Structure and Front-Page Duplicates in Joomla
A follow-up to the technical checklist, covering two things that get done wrong more often than they get done: consolidating the front page, and the heading levels in your article layout.
The front page has copies of itself
Every Joomla site starts with at least two addresses for the front page — / and /index.php — and usually a third, the alias of the Home menu item.
Redirect the alias:
RewriteRule ^home\.html$ / [R=301,L]
Adjust for your own alias and whether you use a URL suffix.
/index.php needs more care. The naive rule — redirecting anything matching index.php — creates a loop, because Joomla routes every request through that file internally. Match the original request line instead, so only a visitor typing the address is redirected:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ https://example.com/ [R=301,L]
THE_REQUEST holds the raw request as it arrived and is not affected by internal rewrites, which is exactly the distinction needed here.
Check the heading level before changing it
The advice you will find in older articles is to open the article layout, find the <h2> around the title and change it to <h1>. On current Joomla that advice is out of date and following it can make things worse.
Modern Joomla already decides this for you. In the article layout:
$htag = $this->params->get('show_page_heading') ? 'h2' : 'h1';
If the menu item shows a page heading, that heading becomes the <h1> and the article title drops to <h2> beneath it. If it does not, the article title is the <h1>. Both arrangements are correct — there is one top-level heading either way.
So before overriding anything, view the source of an article page and see what you actually have. If the title is already <h1>, there is nothing to fix. If it is <h2>, look for the page heading above it — the fix is usually a menu item setting, not a template edit.
Where the heading genuinely is wrong is in third-party templates that wrap the site name in an <h1> in the header. That gives every page the same top-level heading and pushes the real title down. Fix it in the template header, where the problem is.
Headings in listings are meant to be h2
On a category blog, each item title renders as <h2>, and that is right: the listing page has its own heading, and the items are entries within it. Do not raise them to <h1> — a page with twelve <h1> elements has no heading structure at all.
How overrides work now
If you do need to change a layout, copy it into your template rather than editing core:
mkdir -p templates/yourtemplate/html/com_content/article
cp components/com_content/tmpl/article/default.php \
templates/yourtemplate/html/com_content/article/
Two details decide whether this works at all. The source layouts are in components/com_content/tmpl/ — not in a views/ folder, which is where copy-paste instructions often send people. And the override path includes the component: html/com_content/article/, never html/article/ on its own.
Joomla can create the folder structure for you: System → Site Templates → your template → Create Overrides. Safer than copying by hand, because it puts the files exactly where the template loader will look for them.
What overrides cost you
An override is a frozen copy. When Joomla improves that layout — accessibility fixes, new markup, schema output — your copy keeps the old version, silently, for as long as it exists. Override the layouts you genuinely need to change, note that you have done so, and re-check them after major upgrades.