Ödeme Yöntemleri Abuse

Nginx'te WWW'den WWW olmayana nasıl yönlendirme yapılır

22.02.2022, 20:05


Bir web sitesini SEO kurallarına göre optimize etmek için tek bir alan adına sahip olması gerekir. www ile bir alt alan adı ayrı bir alan adı olarak kabul edilir, erişilemez olması durumunda yinelenen içeriğe yol açacaktır. Bu ne anlama geliyor? Kopyalar - istenmeyen öğeler, genellikle sitenin arama motorlarındaki konumunda bir düşüşe neden olur. Bu nedenle www alan adından www olmadan bir yönlendirme yapmaya değer. Yani başlangıçta www alt alanı, sunucuya bir web sunucusu dağıtamayacağını ve siteyi barındıramayacağını belirtmek için kullanılıyordu. Şimdi bu artık gerekli değil. Bu makalede www'dan www'suz Nginx'e nasıl yönlendirme yapılacağına bakacağız.

NGINX'te WWW olmadan yönlendirme nasıl yapılır

Nginx'te www alanı için bir yönlendirme yapmanın en basit yolu, bunun için ayrı bir sunucu bölümü oluşturmak ve oradan yönlendirme yapmaktır. Örneğin:

server {
server_name www.losst.ru;
return 301 $scheme://losst.ru$request_uri;
}

Aynı sunucu bölümünde www ve www olmayanların işlenmesini belirlemeniz gereken durumda, bir koşul ve düzenli bir ifade kullanabilirsiniz. Host değişkeninin başında www harfleri olduğunda, bir 301 yanıt kodu ve kullanıcının yönlendirilmesi gereken bir bağlantı döndürmelisiniz:

if ($host ~* ^www.(.*)$) {
return 301 $scheme://$server_name$request_uri;
}

Kod, yönlendirmeyi ayarlamak istediğiniz sitenin sunucu bölümüne eklenmelidir. LetsEncrypt SSL sertifikası kullanıyorsanız, hem www alan adı hem de www olmayan alan adı için bir doğrulama oluşturmanız gerekecektir. Onaylama isteği bir yönlendirme değil, bir yanıt döndürmelidir. Bunu yapmak için bir $need_redirect değişkeni oluşturabilir ve ardından değerini birkaç koşulla değiştirebilirsiniz:

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;

URL, bir SSL sertifikası için alan doğrulama isteğinde kullanılan well-known kelimesini içerdiğinde, yönlendirme başarısız olur. Ayarları kaydedin. Ayarları kaydedin ve Nginx'i yeniden başlatın:

nginx -s reload

Veya:

sudo systemctl restart nginx

Daha sonra curl kullanarak yönlendirmenin çalışıp çalışmadığını test edebilirsiniz:

curl -I www.losst.ru

Yönlendirme geri dönecektir, Konum alanında kullanıcıyı yönlendirmek için bir URL vardır. Ancak URL'ye LetsEncrypt'ten erişmeye çalışırsanız, yönlendirme olmayacaktır:

curl -I https://www.losst.ru/.well-known/acme-challenge/xxxxxxxxxxxxxxxxxxxxxxx

Her şey beklendiği gibi çalışır. Bu talimatın sonudur.