Dokumentacja

Jeden adres, z www lub bez

Jeden adres, z www lub bez

example.com i www.example.com to dwa różne adresy. Ludzie wpisują oba, a inne strony linkują do obu. Jeśli oba pokazują stronę, Google widzi dwie kopie każdej podstrony i dzieli między nie linki i pozycje, analityka liczy dwie nazwy hosta, a odwiedzający zalogowany na jednym jest wylogowany na drugim.

Wybierz jeden jako adres główny, a drugi niech odpowiada stałym przekierowaniem 301 na niego. Który wybierzesz, dla pozycji nie ma znaczenia; liczy się konsekwencja. Lista kontrolna strony sprawdza wariant, którego nie używasz.

Czego oczekuje lista kontrolna

Drugi wariant Wynik
przekierowuje na adres główny OK
pokazuje stronę bez przekierowania ostrzeżenie: dwie kopie strony
ma błąd certyfikatu błąd: odwiedzający, którzy go wpiszą, zamiast Twojej strony widzą ostrzeżenie bezpieczeństwa
nie istnieje (brak rekordu DNS) informacja: w porządku, dopóki nikt go nie wpisuje ani do niego nie linkuje

Przypadek z certyfikatem dotyczy wielu stron: przekierowanie jest ustawione, ale certyfikat obejmuje tylko example.com, więc https://www.example.com pada, zanim przekierowanie zdąży zadziałać. Wariant, który przekierowuje, też potrzebuje ważnego certyfikatu.

Sprawdź sam

Zamiast example.com wpisz swoją stronę. Jeśli Twoim adresem głównym jest www.example.com, sprawdź zamiast tego example.com:

dig +short www.example.com
curl -sI https://www.example.com/some/page | grep -iE '^(HTTP|location)'
curl -sI http://www.example.com/some/page | grep -iE '^(HTTP|location)'

Po naprawie wygląda to tak, jednym skokiem i z zachowaną ścieżką:

HTTP/2 301
location: https://example.com/some/page

Jeśli curl zamiast tego wypisze błąd typu SSL: no alternative certificate subject name matches target host name, certyfikat nie obejmuje tego wariantu. Jeśli dig nic nie wypisze, wariant nie ma rekordu DNS.

Jak to naprawić

Są trzy części, w tej kolejności: rekord DNS dla drugiego wariantu, certyfikat obejmujący obie nazwy i przekierowanie. Wybierz to, do czego masz dostęp.

Dostawca DNS

Drugi wariant potrzebuje rekordu DNS, który wskazuje ten sam serwer (lub CDN) co adres główny. Najczęściej jest to www:

Nazwa Typ Wartość
www CNAME example.com.

Jeśli Twój dostawca nie pozwala tam na CNAME, użyj rekordu A z tym samym adresem IP co domena główna (na przykład 203.0.113.10) oraz rekordu AAAA, jeśli domena główna go ma.

Jeśli adresem głównym jest www.example.com, a sama domena example.com nie ma rekordu, dodaj rekord A dla @ z adresem IP serwera. CNAME na samej domenie jest niedozwolony, chyba że dostawca oferuje ALIAS, ANAME lub CNAME flattening.

Nowe rekordy zwykle działają w ciągu kilku minut; zmiana istniejącego rekordu może potrwać tyle, ile wynosi jego TTL.

WordPress

WordPress sam przekierowuje na hosta z Settings → General → Site Address (URL) (tzw. canonical redirect), o ile żądanie dla drugiego wariantu trafia do tej samej instalacji WordPressa.

  1. Ustaw WordPress Address (URL) i Site Address (URL) na ten sam adres główny, na przykład https://example.com.
  2. Upewnij się, że drugi wariant ma rekord DNS i certyfikat (zobacz zakładkę DNS i zakładkę swojego hostingu). Bez certyfikatu przeglądarka zatrzyma się, zanim WordPress zdąży przekierować.
  3. Wyczyść pamięć podręczną stron.

Jeśli drugi wariant pokazuje inną stronę albo stronę zastępczą hostingu, nie wskazuje na Twojego WordPressa. Popraw to w panelu hostingu.

cPanel

  1. Certyfikat: w Security → SSL/TLS Status sprawdź, czy example.com i www.example.com są oznaczone jako objęte. AutoSSL uwzględnia www, gdy jego rekord DNS wskazuje serwer; po dodaniu rekordu kliknij Run AutoSSL.
  2. Przekierowanie: dodaj to na początku pliku .htaccess w katalogu głównym strony (File Manager, z włączonym Show Hidden Files). Przekierowuje www na samą domenę i http:// na https:// jednym skokiem:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]

W odwrotnym kierunku (sama domena na www) zmień drugi warunek na RewriteCond %{HTTP_HOST} !^www\. [NC], a cel na https://www.example.com%{REQUEST_URI}.

cPanel ma też Domains → Redirects, ale jego opcjami dla www łatwo ustawić pętlę. Reguła w .htaccess jest bardziej przewidywalna.

Plesk

  1. Certyfikat: w Websites & Domains → example.com → SSL/TLS Certificates przy wystawianiu lub odnawianiu certyfikatu Let's Encrypt uwzględnij subdomenę www.
  2. Przekierowanie: otwórz Websites & Domains → example.com → Hosting & DNS → Hosting (w starszych wersjach Hosting Settings). W Preferred domain wybierz example.com lub www.example.com. Plesk wysyła wtedy z drugiej stałe przekierowanie 301.
  3. Kliknij OK.

nginx

W pliku Twojej strony (/etc/nginx/sites-available/example.com na Debianie i Ubuntu, /etc/nginx/conf.d/example.com.conf na Rocky, Alma i CentOS) daj drugiemu wariantowi osobny blok server dla HTTPS, który tylko przekierowuje:

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name www.example.com;

    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    return 301 https://example.com$request_uri;
}

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;

    return 301 https://example.com$request_uri;
}

Główny blok server zachowuje tylko server_name example.com;. Certyfikat musi obejmować obie nazwy; z Certbotem:

sudo certbot certonly --nginx -d example.com -d www.example.com
sudo nginx -t && sudo systemctl reload nginx

Apache i LiteSpeed

Z dostępem do serwera (Apache). Dodaj wirtualny host dla drugiego wariantu, który tylko przekierowuje (w /etc/apache2/sites-available/ na Debianie i Ubuntu, w /etc/httpd/conf.d/ na Rocky, Alma i CentOS):

<VirtualHost *:443>
    ServerName www.example.com
    SSLEngine on
    SSLCertificateFile    /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    Redirect permanent / https://example.com/
</VirtualHost>

Usuń www.example.com z ServerAlias głównego wirtualnego hosta, uzyskaj certyfikat dla obu nazw (sudo certbot --apache -d example.com -d www.example.com) i przeładuj:

sudo apachectl configtest && sudo systemctl reload apache2

(Na Rocky, Alma i CentOS httpd zamiast apache2.)

Bez dostępu do serwera (hosting współdzielony, LiteSpeed). Użyj reguły .htaccess z zakładki cPanel; działa na każdym hostingu, który czyta .htaccess.

Cloudflare

  1. W DNS → Records upewnij się, że drugi wariant istnieje i jest Proxied (pomarańczowa chmurka). Reguły przekierowań działają tylko na ruchu przez proxy. Certyfikat brzegowy Cloudflare automatycznie obejmuje example.com i www.example.com.
  2. Przejdź do Rules → Overview, kliknij Create rule i wybierz Redirect Rule (na niektórych kontach: Rules → Redirect Rules). Zacznij od szablonu Redirect from WWW to root albo ustaw ją sam:
    • When incoming requests match: Hostname equals www.example.com
    • Then: Dynamic, wyrażenie concat("https://example.com", http.request.uri.path)
    • Status code: 301 i włącz Preserve query string
  3. Deploy.

Shopify

Shopify podłącza example.com i www.example.com i przekierowuje wszystkie na domenę główną. W Settings → Domains sprawdź, czy obie są widoczne jako podłączone i czy domeną główną jest ta, którą chcesz (jeśli nie, Change primary domain). Shopify wystawia certyfikaty, gdy rekordy DNS wskazują na Shopify.

Inne platformy hostowane

Wix, Squarespace i Webflow również przekierowują każdą podłączoną domenę na tę, którą w ustawieniach domen oznaczysz jako główną lub domyślną. Jeśli lista kontrolna zgłasza błąd certyfikatu albo dwie kopie, drugiego wariantu zwykle brakuje na liście domen platformy albo jego rekord DNS wciąż wskazuje gdzie indziej.

Potwierdź poprawkę

Uruchom ponownie polecenia z sekcji Sprawdź sam, potem otwórz cel w PulseKeeper i kliknij Sprawdź teraz na zakładce Lista kontrolna. Jeśli lista kontrolna pokazuje dodatkowy skok, w przewodniku Przekieruj HTTP na HTTPS znajdziesz, jak dojść do adresu głównego jednym krokiem.