Ad

How To Make Canonicals With PHP

- 1 answer

I've search around on SO, but can't find an exact answer to my needs.

Generating a URL is pretty easy...

Like so:

<link rel="canonical" target="_blank" rel="nofollow noreferrer" href="https://example.com<?php echo ($_SERVER['REQUEST_URI']); ?>" />

But, the issue with this is, the $_SERVER['REQUEST_URI']) will always fetch the current file in use, so the canonical URL could potentially change.

So it could flick between www.example.com/hello.php and www.example.com/hello/, and many other variations depending on how the user accesses your site.

How do I make it so it's always the same url? (preferably without .php)

Ad

Answer

Worked it out myself, pretty basic:

<?php
$fullurl = ($_SERVER['REQUEST_URI']);
$trimmed = trim($fullurl, ".php");
$canonical = rtrim($trimmed, '/') . '/';
?>

Then...

<link rel="canonical" target="_blank" rel="nofollow noreferrer" href="https://example.com<?php echo $canonical ?>" />

I'm sure there's different methods, but it works for me.

Ad
source: stackoverflow.com
Ad