
🚀 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 -Ilub 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:
1 RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 2 RewriteRule ^(.*)$ 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:
1 RewriteCond %{HTTPS} off [OR] 2 RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 3 RewriteRule ^(.*)$ 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:
1 RewriteCond %{HTTP_HOST} !^www\. [NC] 2 RewriteRule ^(.*)$ 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:
1 RewriteCond %{HTTPS} off [OR] 2 RewriteCond %{HTTP_HOST} !^www\. [NC] 3 RewriteRule ^(.*)$ 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ę odHTTP/1.1 301 Moved Permanently, a nagłówekLocation: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
.htaccessna poziomie Apache jest zauważalnie szybszy. Dla Grav praktycznie nie ma wtyczek do przekierowań, dlatego.htaccesspozostaje główną ścieżką. Na serwerach NGINX odpowiednikiem są dyrektywyreturn 301w blokuserver {}.
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.backupz 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.htaccessna 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.



