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]
Link do Gist
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/
Komentarze i Reakcje