Skip to content

Wszystko o WordPressie, tworzeniu stron — i nie tylko

🚀 Redirect z www na bez www przez .htaccess: pełny poradnik dla Grav, WordPress i innych CMS

🚀 Redirect z www na bez www przez .htaccess: pełny poradnik dla Grav, WordPress i innych CMS

Strona otwiera się zarówno z www, jak i bez, a wyszukiwarka widzi dwa różne adresy z tą samą treścią. Duplikaty stron, rozmyta wartość linków, zamieszanie w Search Console. Brzmi znajomo?

Ani Grav, ani WordPress nie rozwiązują tego problemu od razu po instalacji. Plik .htaccess i dokładnie jeden blok kodu w pięć minut wszystko naprawiają. Poniżej sprawdzone reguły dla serwerów Apache: uniwersalne, bez sztywno wpisanej domeny, z HTTPS i bez. Plus sposób, by upewnić się, że przekierowanie działa nie tylko w przeglądarce.

💡 Szybki przegląd:

  • Wybierz wariant kanoniczny (z www lub bez) i dodaj uniwersalne przekierowanie 301 w .htaccess
  • Sprawdź łańcuch przekierowań przez curl -I lub narzędzie online: przeglądarka buforuje 301 i może kłamać
  • Jeden blok kodu rozwiązuje jednocześnie problem www i wymuszenia HTTPS

Po co w ogóle wybierać między www a bez www

Google nie preferuje żadnego z wariantów, oficjalne stanowisko jest niezmienne od lat. Trzeba jednak wybrać jeden i konsekwentnie go stosować. Bez przekierowania www.site.ru/page i site.ru/page są indeksowane jako różne adresy URL, wartość linków dzieli się na pół, a w analityce ten sam ruch jest liczony podwójnie.

Co wybrać? Dla dużych projektów www jest wygodniejsze: pliki cookie nie wyciekają na subdomeny takie jak cdn. i api., łatwiej skonfigurować rekordy DNS. Dla małych witryn różnica jest prawie żadna. Kieruj się tym, co jest już zaindeksowane: wpisz site:вашдомен.ru w wyszukiwarkę i zobacz, który wariant częściej pojawia się w wynikach. To właśnie jego ustaw jako kanoniczny.

Szczegół techniczny: Grav sam nie generuje przekierowania. WordPress tylko wtedy, gdy siteurl w ustawieniach jawnie pokrywa się z pożądanym wariantem, ale i to działa niestabilnie. Rozwiązanie jest jedno, mod_rewrite w Apache przez .htaccess.

Gdzie leży.htaccess i jak go nie położyć

Plik .htaccess znajduje się w katalogu głównym witryny, tam gdzie index.php lub folder wp-admin. Jeśli pliku nie ma (Grav bez gotowego szablonu, świeży hosting), utwórz plik tekstowy o nazwie .htaccess, kropka na początku jest obowiązkowa.

Przed jakąkolwiek edycją pobierz aktualną wersję na komputer. Błąd składni w .htaccess natychmiast kładzie witrynę z błędem 500. Żelazna zasada: jedna kopia zapasowa lokalnie, druga, pod inną nazwą, bezpośrednio na serwerze (.htaccess.backup). Przywrócić można nawet bez dostępu do panelu administracyjnego, przez FTP lub menedżer plików hostingu.

Dla Grav i WordPress zasada jest wspólna: jeśli w pliku jest już RewriteEngine On, nie duplikuj tej linii. Dodawaj nowy blok przekierowania po niej. W standardowym .htaccess Grav jest ona obecna domyślnie.

301 Przekierowanie z www na bez www: uniwersalny kod

Kod poniżej działa dla każdej domeny, nie trzeba ręcznie podstawiać example.com. Wygodne, jeśli prowadzisz kilka witryn lub przenosisz reguły między projektami. Dodaj w .htaccess po RewriteEngine On:

1RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
2RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Linia po linii: RewriteCond wyłapuje każdy host zaczynający się od www. i przechwytuje domenę w nawiasy. RewriteRule przekierowuje żądanie na tę samą ścieżkę bez www, podstawiając przechwyconą domenę przez %1. Flaga R=301 oznacza stałe przekierowanie. L mówi serwerowi „stop, nie stosuj dalszych reguł". NC sprawia, że sprawdzanie nie uwzględnia wielkości liter.

Jeśli witryna działa po HTTPS, zamień http:// na https:// w RewriteRule. A jeszcze lepiej, użyj połączonego bloku, który za jednym razem rozwiązuje i www, i HTTPS:

1RewriteCond %{HTTPS} off [OR]
2RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
3RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Pierwszy warunek uruchamia się dla żądań HTTP, drugi dla www. Jeśli prawdziwy jest którykolwiek z dwóch ([OR]), żądanie leci na https://домен-без-www/путь. Jeden blok, dwa problemy załatwione.

Scenariusz odwrotny: z bez www na www

Jeśli potrzebujesz, by w pasku adresu zawsze było www, użyj lustrzanego wariantu:

1RewriteCond %{HTTP_HOST} !^www\. [NC]
2RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Logika ta sama, tylko warunek odwrócony: jeśli host nie zaczyna się od www, dodajemy www. na początek. %{HTTP_HOST} podstawia bieżący host w całości, w przeciwieństwie do poprzedniego bloku, gdzie odcinaliśmy www. przez przechwycenie w nawiasy.

Wersja z HTTPS:

1RewriteCond %{HTTPS} off [OR]
2RewriteCond %{HTTP_HOST} !^www\. [NC]
3RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

Użyj jednego z czterech bloków, tego, który odpowiada Twojemu wariantowi domeny kanonicznej i obecności HTTPS. Dwa bloki pod rząd nie są potrzebne i stworzą dodatkowy przeskok w łańcuchu przekierowań.

Jak sprawdzić, czy przekierowanie działa

Nie polegaj na przeglądarce, buforuje ona przekierowania 301 i pokazuje stary obraz nawet po edycji .htaccess. Trzy sposoby, by poznać prawdę:

  • curl** -I.** W terminalu: curl -I http://www.example.com. Prawidłowa odpowiedź zaczyna się od HTTP/1.1 301 Moved Permanently, a nagłówek Location: zawiera docelowy adres URL. Sprawdź oba warianty, z www i bez.
  • Narzędzia online. Redirect Checker lub HTTP Status Code Checker: wklejasz URL, widzisz pełny łańcuch przekierowań i końcowy kod odpowiedzi.
  • Google Search Console. Po zmianie domeny kanonicznej wejdź w ustawienia usługi i wskaż pożądaną wersję. Nie zastępuje to .htaccess, ale daje dodatkowy sygnał wyszukiwarce.

Osobna rada dla Grav: po edycji .htaccess wyczyść pamięć podręczną CMS, Admin → Configuration → Performance → Clear Cache. Grav agresywnie buforuje strony i bez wyczyszczenia przekierowanie może nie zostać zastosowane do już wygenerowanych kopii.

⁉️🤔 Często zadawane pytania

Który wariant jest lepszy dla SEO, z www czy bez?

Google oficjalnie stwierdza: nie ma różnicy. Wybierz dowolny i trzymaj się go. Kluczowym czynnikiem jest spójność: linki wewnętrzne, mapa witryny i znaczniki canonical muszą wskazywać na jeden wariant. Według danych z ankiety Ahrefs około 55% witryn z top 100 używa wersji bez www, ale oba warianty są równie skutecznie pozycjonowane.

Co się stanie, jeśli w ogóle nie skonfiguruję przekierowania?

Wyszukiwarki zobaczą dwie niezależne, zduplikowane witryny. Wartość linków się podzieli, strony zaczną ze sobą konkurować w wynikach, a w raportach analitycznych ten sam ruch rozmyje się na dwa hosty. Po kilku miesiącach typowy obraz: połowa stron w indeksie z www, połowa bez, pozycje niestabilne.

Czy można obejść się bez.htaccess?

Tak, ale alternatywy są albo bardziej skomplikowane, albo wolniejsze. Wtyczki do WordPress, takie jak Redirection i Rank Math, działają na poziomie PHP, każde żądanie przechodzi przez rdzeń WordPressa, co generuje obciążenie. Dla witryn o dużym ruchu .htaccess na poziomie Apache jest zauważalnie szybszy. Dla Grav praktycznie nie ma wtyczek do przekierowań, dlatego .htaccess pozostaje główną ścieżką. Na serwerach NGINX odpowiednikiem są dyrektywy return 301 w bloku server {}.

Czy trzeba konfigurować przekierowanie dla każdej strony osobno?

Nie, podane reguły są uniwersalne, stosują się automatycznie do wszystkich adresów URL witryny. Jeden blok obejmuje stronę główną, podstrony, obrazy i pliki CSS. Oddzielne przekierowania ze starych URL-i na nowe konfiguruje się dodatkowo liniami Redirect 301 /old-page /new-page, ale nie mają one związku z problemem www.

Błąd 500 po edycji.htaccess, co robić?

Skopiuj .htaccess.backup z powrotem przez FTP lub menedżer plików hostingu, witryna ożyje natychmiast. Sprawdź kod pod kątem literówek: brakująca spacja, zbędny ukośnik, niesparowane nawiasy. Dodawaj reguły pojedynczo i testuj po każdej zmianie. I nigdy nie edytuj .htaccess na produkcji bez aktualnego backupu pod ręką.

Przekierowanie działa, ale Google nadal pokazuje starą wersję w wynikach, dlaczego?

Ponowna indeksacja trwa od kilku dni do kilku tygodni. Upewnij się, że znaczniki canonical na stronach wskazują na wybrany wariant, a mapa witryny zawiera adresy URL bez starego hosta. W Search Console można poprosić o ponowne przeszukanie przez narzędzie do sprawdzania adresu URL, to przyspiesza proces, ale nie gwarantuje natychmiastowego rezultatu.

Który wariant ustawić: krótki werdykt

Jeśli witryna jest nowa, weź wariant bez www i HTTPS. Mniej znaków w pasku adresu, łatwiej podyktować na głos, żadnych problemów z plikami cookie na subdomenach. Dla większości projektów to wystarcza z dużym zapasem.

Jeśli już zaindeksowałeś się z www, nie psuj tego, co działa. Skonfiguruj przekierowanie z bez-www na www, zaktualizuj canonical i żyj spokojnie.

Cały proces: otwierasz .htaccess, dodajesz jeden z czterech bloków powyżej, czyścisz pamięć podręczną CMS, sprawdzasz przez curl -I. Pięć minut i duplikaty znikają z obrazu wyszukiwarki. Inne techniki dla .htaccess zebrano w zestawieniu dotyczącym konfiguracji serwera, zajrzyj, jeśli konfigurujesz witrynę kompleksowo.