Ogonki w odnośnikach i .htaccess

Jakiś czas temu pomagałem w przywróceniu do życia strony antybariera.pl.

Domyślnie strona oparta była na Drupal, jednakże sam sktypt nie był automatycznie aktualizowany do najnowszej wersji jak to ma miejsce w innych rozwiązaniach.

Jako że Drupal nie jest czymś, czym chciałbym się zajmować, postanowiłem przy tej okazji przenieść stronę na WordPress.

Wszystko przebiegło poprawnie – mimo że starsze posty wymagają poprawy (ale to wina wklejania z Word). Na kolejnym etapie przystąpiłem do spraw SEO oraz usunięcia śmieci, które zostały zindeksowane przez Google.

O ile śmieci nie stanowiły problemu, sposób w jaki Drupal działał (był ustawiony) w języku polskim już tak – a mianowicie ogonki.

Drupal, języku polskim używał polskie znaki w odnośnikach do wpisów na stronie, natomiast WordPress usuwa wszelkie ogonki (accented characters). W związku z tym odnośniki opublikowane za czasu Drupal na portalach społecznościowych (jak i te zindeksowane przez Google) przestały działać.

Na przykład:
/czy-jestes-kofeinistą/
nie przekierowywał na
/czy-jestes-kofeinista/
lecz zwracał błąd 404 – strona nie znaleziona.

Spędziłem dwa tygodnie szukając rozwiązania, przeplatając się przez nie kilkukrotnie, ale dopiero pomoc ze strony użytkownika @nsabol (Neil Sabol) pozwoliły nakierować mnie i pokazać, gdzie popełniałem błąd.

Jak się okazało, rozwiązanie było proste, jednakże wykonanie – a dokładnie wklejenie odpowiedniego kodu w pliku .htaccess odgrywało kluczową rolę. Otóż niezbędne było to, aby kod przekierowania ogonków z adresów użytkownika dokonany był jako pierwsza komenda w pliku .htaccess.

O ile samo przekierowanie znalazłem w Google bardzo szybko, nie wpadłem na pomysł uprzywilejowania go i wklejenia na samym początku. Stąd też wcześniejsze próby nie działały.

Aby zaoszczędzić wam nerwów, wklejam poniższy kod do polskich znaków (jednakże można go użyć/zmodyfikować pod dowolny język z ogonkami).

RewriteEngine On
RewriteRule ^(.*)ą(.*)$ /$1a$2 [L,R=302]
RewriteRule ^(.*)ć(.*)$ /$1c$2 [L,R=302]
RewriteRule ^(.*)ę(.*)$ /$1e$2 [L,R=302]
RewriteRule ^(.*)ł(.*)$ /$1l$2 [L,R=302]
RewriteRule ^(.*)ń(.*)$ /$1n$2 [L,R=302]
RewriteRule ^(.*)ó(.*)$ /$1o$2 [L,R=302]
RewriteRule ^(.*)ś(.*)$ /$1s$2 [L,R=302]
RewriteRule ^(.*)ź(.*)$ /$1z$2 [L,R=302]
RewriteRule ^(.*)ż(.*)$ /$1z$2 [L,R=302]

I przypominam, powyższe linijki wstawiamy jako pierwsze w naszym pliku.

Dla mniej wtajemniczonych, plik .htaccess znajduje się w naszym głównym katalogu gdzie wrzucona jest nasza strona i jest on domyślnie ukryty (szczególnie w systemach macOS i Linux). Należy zadbać, aby nasz klient FTP wyświetlił pełną zawartość, szczególnie gdy plik posiada “kropkę” jako pierwszy znak w nazwie. Program FileZilla radzi sobie z tym wyśmienicie i dodatkowo jest wieloplatformowy.

I to by było na tyle. Resztę musiałem przekierować, w zależności od potrzeb (i wskazań Google Search Console) rozwiązałem z wykorzystaniem wtyczki Safe Redirect Manager.

Pozdrawiam

Źródło: wordpress.org/support/topic/redirect-old-accented-url-drupal-to-match-new-wordpress/

Dodaj komentarz