Dokumentacija
En naslov, z www ali brez
En naslov, z www ali brez
example.com in www.example.com sta dva različna naslova. Ljudje vtipkajo oba in druge strani povezujejo na oba. Če oba prikažeta stran, Google vidi dve kopiji vsake strani in med njiju razdeli povezave in uvrstitev, analitika šteje dve imeni gostitelja, obiskovalec, prijavljen na enem, pa je na drugem odjavljen.
Enega izberite za glavni naslov, drugi pa naj odgovori s trajno preusmeritvijo 301 nanj. Katerega izberete, za uvrstitev ni pomembno; pomembno je, da ste dosledni. Kontrolni seznam strani preveri različico, ki je ne uporabljate.
Kaj pričakuje kontrolni seznam
| Druga različica | Rezultat |
|---|---|
| preusmeri na glavni naslov | OK |
| prikaže stran brez preusmeritve | opozorilo: dve kopiji strani |
| ima napako certifikata | napaka: obiskovalci, ki jo vtipkajo, namesto vaše strani vidijo varnostno opozorilo |
| ne obstaja (brez zapisa DNS) | informacija: v redu, dokler je nihče ne vtipka ali nanjo ne povezuje |
Primer s certifikatom ujame veliko strani: preusmeritev je nastavljena, certifikat pa pokriva samo example.com, zato https://www.example.com pade, še preden lahko preusmeritev steče. Tudi različica, ki preusmerja, potrebuje veljaven certifikat.
Preverite sami
Namesto example.com vpišite svojo stran. Če je vaš glavni naslov www.example.com, namesto tega preverite 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)'
Popravljeno je videti takole, v enem skoku in z ohranjeno potjo:
HTTP/2 301
location: https://example.com/some/page
Če curl namesto tega izpiše napako, kot je SSL: no alternative certificate subject name matches target host name, certifikat te različice ne pokriva. Če dig ne izpiše ničesar, različica nima zapisa DNS.
Kako popraviti
Popravek ima tri dele, v tem vrstnem redu: zapis DNS za drugo različico, certifikat, ki pokriva obe imeni, in preusmeritev. Izberite tisto, do česar imate dostop.
Ponudnik DNS
Druga različica potrebuje zapis DNS, ki kaže na isti strežnik (ali CDN) kot glavni naslov. Najpogosteje je to www:
| Ime | Tip | Vrednost |
|---|---|---|
www |
CNAME |
example.com. |
Če vaš ponudnik tam ne dovoli zapisa CNAME, uporabite zapis A z istim naslovom IP kot glavna domena (na primer 203.0.113.10) in še zapis AAAA, če ga ima glavna domena.
Če je glavni naslov www.example.com in gola domena example.com nima zapisa, dodajte zapis A za @ z naslovom IP strežnika. CNAME na goli domeni ni dovoljen, razen če ponudnik ponuja ALIAS, ANAME ali CNAME flattening.
Novi zapisi običajno delujejo v nekaj minutah; spremenjen obstoječi zapis lahko potrebuje toliko časa, kolikor znaša njegov TTL.
WordPress
WordPress že sam preusmeri na gostitelja iz Settings → General → Site Address (URL) (t. i. canonical redirect), če zahtevek za drugo različico pride do iste namestitve WordPressa.
- WordPress Address (URL) in Site Address (URL) nastavite na isti glavni naslov, na primer
https://example.com. - Preverite, da ima druga različica zapis DNS in certifikat (glejte zavihek za DNS in zavihek za vaše gostovanje). Brez certifikata se brskalnik ustavi, še preden lahko WordPress preusmeri.
- Počistite predpomnilnik strani.
Če druga različica prikaže drugo stran ali privzeto stran gostitelja, ne kaže na vaš WordPress. To popravite v nadzorni plošči gostovanja.
cPanel
- Certifikat: v Security → SSL/TLS Status preverite, da sta
example.cominwww.example.comnavedena kot pokrita. AutoSSL vključiwww, ko njegov zapis DNS kaže na strežnik; po dodanem zapisu kliknite Run AutoSSL. - Preusmeritev: to dodajte na vrh datoteke
.htaccessv korenski mapi strani (File Manager, z vklopljenim Show Hidden Files). Preusmeriwwwna golo domeno inhttp://nahttps://v enem skoku:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]
Za obratno smer (gola domena na www) drugi pogoj spremenite v RewriteCond %{HTTP_HOST} !^www\. [NC], cilj pa v https://www.example.com%{REQUEST_URI}.
cPanel ima tudi Domains → Redirects, vendar se z njegovimi možnostmi za www hitro nastavi zanka. Pravilo v .htaccess je bolj predvidljivo.
Plesk
- Certifikat: v Websites & Domains → example.com → SSL/TLS Certificates ob izdaji ali obnovi certifikata Let's Encrypt vključite poddomeno
www. - Preusmeritev: odprite Websites & Domains → example.com → Hosting & DNS → Hosting (v starejših različicah Hosting Settings). Pod Preferred domain izberite
example.comaliwww.example.com. Plesk nato z druge pošilja trajno preusmeritev 301. - Kliknite OK.
nginx
V datoteki vaše strani (/etc/nginx/sites-available/example.com na Debianu in Ubuntuju, /etc/nginx/conf.d/example.com.conf na Rocky, Alma in CentOS) drugi različici dajte svoj blok server za HTTPS, ki samo preusmerja:
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;
}
Glavni blok server obdrži samo server_name example.com;. Certifikat mora pokrivati obe imeni; s Certbotom:
sudo certbot certonly --nginx -d example.com -d www.example.com
sudo nginx -t && sudo systemctl reload nginx
Apache in LiteSpeed
Z dostopom do strežnika (Apache). Dodajte navideznega gostitelja za drugo različico, ki samo preusmerja (v /etc/apache2/sites-available/ na Debianu in Ubuntuju, v /etc/httpd/conf.d/ na Rocky, Alma in 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>
Iz ServerAlias glavnega navideznega gostitelja odstranite www.example.com, pridobite certifikat za obe imeni (sudo certbot --apache -d example.com -d www.example.com) in znova naložite:
sudo apachectl configtest && sudo systemctl reload apache2
(Na Rocky, Alma in CentOS httpd namesto apache2.)
Brez dostopa do strežnika (deljeno gostovanje, LiteSpeed). Uporabite pravilo za .htaccess iz zavihka cPanel; deluje pri vsakem gostitelju, ki bere .htaccess.
Cloudflare
- V DNS → Records preverite, da druga različica obstaja in je Proxied (oranžen oblak). Pravila za preusmeritev delujejo samo na prometu skozi proxy. Cloudflarov robni certifikat samodejno pokrije
example.cominwww.example.com. - Pojdite na Rules → Overview, kliknite Create rule in izberite Redirect Rule (pri nekaterih računih: Rules → Redirect Rules). Začnite s predlogo Redirect from WWW to root ali ga nastavite sami:
- When incoming requests match: Hostname equals
www.example.com - Then: Dynamic, izraz
concat("https://example.com", http.request.uri.path) - Status code:
301, in vklopite Preserve query string
- When incoming requests match: Hostname equals
- Deploy.
Shopify
Shopify poveže example.com in www.example.com in vse preusmeri na primarno domeno. V Settings → Domains preverite, da sta obe navedeni kot povezani in da je primarna tista, ki jo želite (sicer Change primary domain). Shopify izda certifikate, ko zapisi DNS kažejo na Shopify.
Druge gostovane platforme
Tudi Wix, Squarespace in Webflow vsako povezano domeno preusmerijo na tisto, ki jo v nastavitvah domen določite kot primarno ali privzeto. Če kontrolni seznam javi napako certifikata ali dve kopiji, druge različice običajno ni na seznamu domen platforme ali pa njen zapis DNS še vedno kaže drugam.
Potrdite popravek
Znova poženite ukaze iz razdelka Preverite sami, nato v PulseKeeperju odprite tarčo in na zavihku Kontrolni seznam kliknite Preveri zdaj. Če kontrolni seznam pokaže dodaten skok, v vodiču Preusmerite HTTP na HTTPS preberite, kako do glavnega naslova pridete v enem koraku.