Każdy kto miał do czynienia z zagadnieniami SEO wie, że należy unikać duplikacji treści. Czasami jednak dochodzi do sytuacji, w której duplikowanie całej strony lub znacznej części jej treści pod innym adresem jest nieuniknione – aby zaradzić takim sytuacjom warto wykorzystać link kanoniczny. Sposób na zmieszczenie tagu jest kilka, najczęściej spotykanym jest umieszczenie tagu <link> HTML w nagłówku HEAD strony internetowej. W tym artykule chciałem jednak skupić się na możliwości poinformowania robotów indeksujących o adresie kanonicznej strony (tej właściwej do wyświetlania w wyszukiwarce) na dokumentach, które nie są stronami HTML.
W moim przypadku, musiałem znaleźć sposób by dodać link kanoniczny do pliku PDF, który posiadał bardzo zbliżoną nazwę oraz treść do jednego z produktów w sklepie, a Google zamiast strony produktowej, która była na 1 miejscu od kilku dobrych miesięcy, zaczęło wyświetlać właśnie ten plik PDF w wynikach (z różnych powodów nie chciałem blokować indeksacji plików PDF).
Spis treści
Jak dodać canonical w plikach PDF z wykorzystaniem .htaccess?
Sposobem, który okazał się być idealnym w moim przypadku było wykorzystanie pliku .htaccess – znajdziesz go w głównym katalogu swojej strony na serwerze FTP, jest to plik, dzięki któremu możemy sterować ustawieniami katalogów, plików i adresów na serwerach Apache.
Aby w nagłówku HTTP dodać link kanoniczny należy wykorzystać poniższy kod:
Uwaga: warto przetestować rozwiązanie, w zależności od serwera mogą być niezbędne tak jak poniżej znaki \ przed ” w definiowaniu wartości rel, a na niektórych mogą być zbędne. Po wdrożeniu należ sprawdzić nagłówek HTTP czy prawidłowo umieściliśmy tag.
<Files "Nazwa-Twojego-Pliku.pdf">
Header add Link "< http://adres.pl/strona-kanoniczna/ >; rel=\"canonical\""
</Files>
Kod należy umieścić w pliku .htaccess. Najlepiej na samym końcu – tak by nie popsuć żadnych instrukcji, które się już w nim znajdują. Powyższa instrukcja dla pliku Nazwa-Twojego-Pliku.pdf wskaże adres http://adres.pl/strona-kanoniczna/ jako adres kanoniczny. W przypadku gdy mamy na serwerze kilka plików o tej samej nazwie w różnych katalogach – instrukcja doda ten tag kanoniczny do każdego z nich, aby tego uniknąć i dodać link kanoniczny tylko do jednego z nich, powinniśmy w miejscu nazwy wpisać cały adres bezwzględny pliku.
W przypadku gdy mamy do czynienia z większą liczbą np. automatycznie generowanych plików PDF, których nazwa jest identyczna ze „slugiem” podstron, do których powinny kierować linki kanoniczne, możemy wykorzystać wyrażenia regularne i bardziej rozbudowane instrukcje:
RewriteRule ([^/]+)\.pdf$ - [E=FILENAME:$1]
<FilesMatch "\.pdf$">
Header add Link "< http://adres.pl/%{FILENAME}e >; rel=\"canonical\""
</FilesMatch>
Powyższa instrukcja dla pliku PDF o nazwie nazwa-pliku.pdf wskaże adres http://adres.pl/nazwa-pliku .
Źródło: https://geoffkenyon.com/how-to-add-canonical-tag-http-headers/
Jak dodać link kanoniczny na innych rodzajach serwerów:
Nie mam doświadczenia z innymi serwerami, ale udało mi się znaleźć rozwiązanie w sieci:
Jak dodać canonical w ASP.Net C#:
<%Response.AddHeader(@Link,@< http://www.yoursite.com/>; rel="canonical");%>
Jak dodać canonical w ASP VBScript:
<%Response.AddHeader Link,< http://www.yoursite.com/>; rel="canonical"%>
Jak dodać canonical w kodzie PHP:
<?php header(Link: <http://www.yoursite.com/>; rel=canonical");?>
Źródło: https://www.searchenginepeople.com/blog/hwoto-canonical-headers.html
Jak sprawdzić czy faktycznie odpowiedź HTTP zawiera w nagłówku deklarację o linku kanonicznym?
Do tego celu można wykorzystać narzędzie DevTools w przeglądarce Google Chrome, uruchomić można go przyciskiem F12. Następnie przechodzimy do zakładki Network, naciskamy CTRL + R aby przeładować otwarty plik PDF. Następnie wybieramy z listy nasz plik i otworzy nam się okno, w którym pierwszą zakładką jest ta nas interesująca, czyli „Header”.