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.

Yeni VPS'lerde %15 indirim
Herhangi bir yerde sunucu siparişi vermek için acele edin
Bir VPS Seçin

Diğer makaleler

22.02.2022
61 665
Bilgi tabanı / Talimatlar
Linux üzerinde Proton Kurulumu
22.02.2022
23 642
Bilgi tabanı / Talimatlar
MySQL sürümünü öğrenin
22.02.2022
6 743
Bilgi tabanı / Talimatlar
Ubuntu'da IDLE Python Kurulumu