Per ottimizzare un sito web secondo le regole SEO, deve avere un unico dominio. Un sottodominio con www è considerato un dominio separato, nel caso in cui sia inaccessibile, porterà a contenuti duplicati. Cosa significa. Duplicati - elementi indesiderati, che spesso diventano la causa di una diminuzione della posizione del sito nei motori di ricerca. Per questo motivo vale la pena di effettuare un reindirizzamento dal dominio www al dominio senza www. All'inizio, il sottodominio www era utilizzato per indicare al server che non può implementare un server web e ospitare il sito. Ora questo non è più necessario. In questo articolo vedremo come fare un redirect da www a senza www di Nginx.
Il modo più semplice per fare un reindirizzamento in Nginx per il dominio www è creare una sezione del server separata per esso e fare il reindirizzamento da lì. Ad esempio:
server {
server_name www.losst.ru;
return 301 $scheme://losst.ru$request_uri;
}
Nel caso in cui sia necessario designare la gestione di www e non-www nella stessa sezione del server, è possibile utilizzare una condizione e un'espressione regolare. Quando la variabile host ha le lettere www all'inizio, si deve restituire un codice di risposta 301 e un link a cui l'utente deve essere reindirizzato:
if ($host ~* ^www.(.*)$) {
return 301 $scheme://$server_name$request_uri;
}
Il codice deve essere aggiunto alla sezione server del sito per il quale si vuole impostare il reindirizzamento. Se si utilizza un certificato SSL LetsEncrypt, è necessario generare una convalida sia per il dominio www che per il dominio non www. La richiesta di conferma deve restituire una risposta, che deve essere il seguente: "Il sito non è stato creato per il reindirizzamento dell'utente". La richiesta di conferma deve restituire una risposta, non un reindirizzamento. Per farlo, si può creare una variabile $need_redirect
e poi modificarne il valore con alcune condizioni:
set $need_redirect "0";
if ($host ~* ^www.(.*)$) {
set $need_redirect "1";
}
if ($request_uri ~* "well-known") {
set $need_redirect "0";
}
if ( $need_redirect ~ "1") {
return 301 https://$server_name$request_uri;
Se l'URL contiene la parola well-known, utilizzata nella richiesta di convalida del dominio per un certificato SSL, il reindirizzamento fallirà. Salvare le impostazioni. Salvare le impostazioni e riavviare Nginx:
nginx -s reload
Oppure:
sudo systemctl restart nginx
È possibile verificare se il reindirizzamento funziona utilizzando curl
:
curl -I www.losst.ru
Il reindirizzamento viene restituito, il campo Location contiene un URL a cui reindirizzare l'utente. Ma se si prova ad accedere all'URL da LetsEncrypt, non ci sarà alcun reindirizzamento:
curl -I https://www.losst.ru/.well-known/acme-challenge/xxxxxxxxxxxxxxxxxxxxxxx
Tutto funziona come previsto. Questa è la fine delle istruzioni.