0

"Duplikat, użytkownik nie oznaczył strony kanonicznej" - problem z plikami PDF

austin-distel-rx-0vwspiws-unsplash.jpg

Tag rel=”canonical” został oficjalnie wprowadzony jeszcze w 2009 roku i dość szybko przyjął się w świecie SEO. Jednak z powodu tego, iż ów znacznik można użyć jedynie generując strony HTML (czy to poprzez PHP czy za pomocą zwykłego HTMLa) to nie można go używać na na innych podstronach niż HTML. To już jest dość istotny problem, o którym nie mają pojęcia zwykli użytkownicy. Wszystko wychodzi na jaw, gdy zaczynami korzystać z Google Search Console, a tam nagle otrzymujemy komunikat:

Duplikat, użytkownik nie oznaczył strony kanonicznej

Wchodząc w szczegóły błędu dowiadujemy się, że dotyczy on dokumentów PDF, czyli nie stron wygenerowanych jako HTML, a zwykłych dokumentów. Co w takim przypadku robić? Czy da się to obejść? Przecież do PDF nie ustawimy linku kanonicznego? Czyżby?

No dobra, da się to zrobić i nawet warto to zrobić, gdyż niektóre pliki PDF tak dobrze się indeksują, że nawet potrafią być wyżej niż normalne podstrony w wynikach wyszukiwania. Tym samym warto o nie zadbać, a nie traktować po „macoszemu”.

Rozwiązaniem tej sytuacji jest stworzenie rel=”canonical” dla obrazu lub dokumentu. Nie da się oczywiście w zwykły sposób umieścić znacznika w nagłówku HTML. Zamiast tego możemy obsługiwać linki kanoniczne jako nagłówki HTTP.

Jak utworzyć niestandardowy nagłówek http?

Składnia takiego nagłówka jest dość prosta i głównie załatwimy wszystko w głównym pliku .htaccess dla strony. Najpierw nauczmy się identyfikować plik, do którego chcemy przypisać niestandardowy nagłówek. Do tego używjemy <Files> bądź <FilesMatch> - druga opcja pozwoli nam dopasować większą grupę podobnych plików, np. za pomocą Regex.

Po otwarciu znacznika <Files> lub <FilesMatch>, aby zidentyfikować plik, należy umieścić wyrażenie regularne w cudzysłowie lub nazwę pliku. Jeśli użyjesz wyrażenia regularnego w <Files>, będziesz musiał wstawić ~ przed nim. Z reguły zaleca się stosowanie <Files> dla nazw plików i <FilesMatch> w celu dopasowania do wyrażeń regularnych.

Załóżmy, że mamy plik PDF o nazwie „prezentacja.pdf”. Musimy poznać teraz dokładną ścieżkę do wspomnianego pliku. Korzystając z Google Search Console mamy tam je jak na dłoni, a że chcemy pozbyć się stamtąd błędów, więc opracujmy kody właśnie dla tych plików wskazanych w narzędziu.

<Files prezentacja.pdf>

    Header add Link '<http://www.domena.pl/ prezentacja.html>; rel="canonical"'

</Files>

Przy dużych witrynach, które zawierają mnóstwo plików PDF tworzenie dla każdego z nich kodu jak powyżej może być dość uciążliwe, dlatego warto zebrać wszystkie pliki PDF (poprzez wyrażenie regularne bądź dopasowanie do określonego rozszerzenia) i utworzyć jeden kod pasujący do dowolnego pliku z zadanym rozszerzeniem.

RewriteRule ([^/]+)\.pdf$ - [E=FILENAME:$1]

<FilesMatch "\.pdf$">

    Header add Link '<http://www. domena.pl/pobranie/%{FILENAME}e>; rel="canonical"'

</FilesMatch>

Powyższa reguła tworzy tagi kanoniczne dla powiązanych dokumentów PDF znajdujących się w tym samym folderze, w naszym przypadku jest to folder pobranie. Jednym słowem, dla dokumentu PDF prezentacja.pdf tworzymy link kanoniczny http://www. domena.pl/pobranie/prezentacja

Jeśli chcecie mieć dowolne rozszerzenie np.:

http://www. domena.pl/pobranie/prezentacja.html

należy skorzystać z lekko zmodyfikowanego kodu jak poniżej:

RewriteRule ([^/]+)\.pdf$ - [E=FILENAME:$1]

<FilesMatch "\.pdf$">

Header add Link '<http://www. domena.pl/pobranie/%{FILENAME}e.html>; rel="canonical"'

</FilesMatch>

Zalecam nie wykorzystywanie tej metody w głównym pliku .htaccess, warto stworzyć nowy plik w folderze pobranie, dzięki czemu w razie jakby coś poszło nie tak, nie rozwalicie sobie całej witryny.

Dodatkowo metoda będzie działała idealnie o ile nie będziecie kombinować w nazwach plików PDF, więc używajcie tylko małych liter, nie mieszajcie w nazwie z dużymi literami, a dodatkowo zamiast spacji w nazwach dajcie myślniki.

Dla każdego folderu z plikami twórzcie wewnątrz oddzielne pliki .htaccess, nie róbcie tego (powtarzam ponownie) w głównym pliku .htaccess, gdyż dodając tam kilka reguł możecie doprowadzić do sytuacji, że jedna wykluczy drugą.

10-06-2020 195 odsłon