Nginx ile VPS’de Yönlendirmeleri Ayarlama: Tam Bir Yapılandırma Kılavuzu
Yönlendirmeler, iyi yönetilen herhangi bir web altyapısının temel bir bileşenidir. Web sitenizi yeniden yapılandırıyor, yeni bir etki alanına geçiş yapıyor veya bakım sırasında trafiği geçici olarak yönlendiriyor olsanız da, düzgün yapılandırılmış yönlendirmeler SEO sıralamalarınızı korur, bağlantı öz sermayesini korur ve ziyaretçilerin her zaman doğru sayfaya inmesini sağlar. Nginx — dünyanın en güçlü ve yaygın olarak kullanılan web sunucularından biri — yönlendirmeleri uygulamayı hem esnek hem de verimli hale getirir.
Bu kapsamlı rehber, bir VPS Hosting ortamında Nginx kullanarak HTTP yönlendirmelerini yapılandırma hakkında bilmeniz gereken her şey konusunda size yol gösterir; yönlendirme türlerini anlamaktan üretimde kurulumunuzu test etmeye ve doğrulamaya kadar.
1. HTTP Yönlendirmelerini Anlama
Tek bir yapılandırma dosyasına dokunmadan önce, yönlendirmelerin gerçekte ne yaptığını ve doğru türü seçmenin neden önemli olduğunu anlamak önemlidir — özellikle SEO için.
HTTP yönlendirmesi, istemciyi (tipik olarak bir web tarayıcısı veya tarayıcı) orijinal olarak istenen URL’den farklı bir URL’ye gitmeye yönlendiren bir sunucu yanıtıdır. Sunucu bu talimatı bir 3xx HTTP durum kodu kullanarak iletişim kurar ve seçtiğiniz belirli kod, hem kullanıcı deneyimi hem de arama motoru davranışı için önemli çıkarımlar taşır.
En Yaygın Yönlendirme Türleri
| Yönlendirme Türü | Durum Kodu | Kullanım Durumu | Bağlantı Öz Sermayesini Aktarır mı? |
|---|---|---|---|
| Kalıcı Yönlendirme | 301 | Kaynak kalıcı olarak taşındı | ✅ Evet |
| Geçici Yönlendirme | 302 | Kaynak geçici olarak kullanılamıyor | ❌ Hayır |
| Geçici Yönlendirme (Yöntem-Güvenli) | 307 | Geçici taşıma, HTTP yöntemini korur | ❌ Hayır |
| Kalıcı Yönlendirme (Yöntem-Güvenli) | 308 | Kalıcı taşıma, HTTP yöntemini korur | ✅ Evet |
#### 301 Kalıcı Yönlendirme
301 yönlendirmesi en SEO-kritik yönlendirme türüdür. Arama motorlarına bir kaynağın yeni bir URL’ye kalıcı olarak taşındığını ve orijinal sayfanın birikmiş bağlantı öz sermayesinin (“bağlantı suyu”) hedefe aktarıldığını bildirir. URL’leri kalıcı olarak yeniden adlandırırken, yinelenen içeriği birleştirirken veya yeni bir etki alanına geçiş yaparken bunu kullanın.
#### 302 Geçici Yönlendirme
302 yönlendirmesi tarayıcılara ve tarayıcılara taşımanın geçici olduğunu ve orijinal URL’nin sonunda geri yükleneceğini söyler. Arama motorları bunu geçici olarak yorumladığından, bağlantı öz sermayesini hedef URL’ye aktarmazlar. A/B testi, geçici bakım sayfaları veya kısa vadeli promosyon yönlendirmeleri için bunu kullanın.
#### 307 Geçici Yönlendirme
307 yönlendirmesi 302’ye benzer şekilde davranır ancak bir kritik fark vardır: orijinal HTTP istek yöntemini açıkça korur. Bir istemci 307 döndüren bir URL’ye bir POST isteği gönderirse, istemci yeni URL’ye POST’u tekrarlamalı, varsayılan olarak GET’e dönmemelidir. Bu, API uç noktaları ve form gönderimleri için önemlidir.
#### 308 Kalıcı Yönlendirme
308 yönlendirmesi 307’nin kalıcı karşılığıdır — kalıcı bir taşımayı sinyal verirken aynı zamanda HTTP istek yöntemini de korur. 301’den daha az yaygın olarak kullanılır ancak API-ağır ortamlarda değerlidir.
2. Ön Koşullar: SSH Aracılığıyla VPS’nize Erişme
Nginx yönlendirmelerini yapılandırmak için sunucunuza komut satırı erişimi gerekir. Linux tabanlı bir VPS Hosting ortamı çalıştırıyorsanız, bu SSH aracılığıyla bağlanmak anlamına gelir.
Adım 1: Terminal’i Açın ve Bağlanın
Linux veya macOS’ta terminalinizi açın. Windows’ta PuTTY gibi bir istemci veya OpenSSH desteğine sahip yerleşik Windows Terminal’i kullanın.
ssh username@your_server_ipusername yerine gerçek sistem kullanıcınızı (örneğin, root veya sudo etkinleştirilmiş bir kullanıcı) ve your_server_ip yerine VPS’nizin genel IP adresini koyun.
Örnek:
ssh admin@203.0.113.45Bağlandıktan sonra, Nginx’in yüklü olduğunu ve çalıştığını doğrulayın:
sudo systemctl status nginxHizmetin active (running) olduğunu gösteren çıktı görmelisiniz. Nginx henüz yüklü değilse, bunu şu şekilde yükleyebilirsiniz:
# On Ubuntu/Debian
sudo apt update && sudo apt install nginx -y
# On CentOS/RHEL/AlmaLinux
sudo dnf install nginx -y3. Nginx Yapılandırma Dosyalarını Bulma ve Anlama
Nginx hiyerarşik bir yapılandırma yapısı kullanır. Dosyaların nerede yaşadığını anlamak, herhangi bir değişiklik yapmadan önce gereklidir.
Varsayılan Yapılandırma Yolları
| Yol | Amaç |
|---|---|
/etc/nginx/nginx.conf | Ana Nginx yapılandırma dosyası |
/etc/nginx/sites-available/ | Mevcut sanal ana bilgisayar yapılandırmaları |
/etc/nginx/sites-enabled/ | Sembolik bağlantılı etkin yapılandırmalar |
/etc/nginx/conf.d/ | Ek yapılandırma dosyaları (CentOS/RHEL stili) |
Ubuntu/Debian sistemlerinde, önerilen yaklaşım /etc/nginx/sites-available/ içinde bireysel yapılandırma dosyaları oluşturmak ve ardından /etc/nginx/sites-enabled/ içinde sembolik bağlantılar oluşturarak bunları etkinleştirmektir.
CentOS/RHEL/AlmaLinux sistemlerinde, yapılandırmalar tipik olarak /etc/nginx/conf.d/ içinde yaşar.
Yapılandırma Dosyasını Açma
Belirli bir etki alanının yapılandırmasını düzenlemek için:
sudo nano /etc/nginx/sites-available/example.comDosya henüz mevcut değilse, bu komut onu oluşturacaktır. vim veya tercih ettiğiniz başka bir metin editörünü de kullanabilirsiniz.
4. Nginx’te Yönlendirmeleri Yapılandırma
Nginx yönlendirmeleri öncelikle iki yönerge aracılığıyla işler: return ve rewrite. return yönergesi daha basit, daha hızlı ve çoğu yönlendirme senaryosu için önerilir. rewrite yönergesi karmaşık desen tabanlı yönlendirmeler için daha fazla güç sunar.
Yöntem 1: return Yönergesini Kullanma (Önerilir)
return yönergesi işlemeyi durdurur ve hemen belirtilen HTTP durum kodunu ve URL’yi istemciye döndürür. Basit yönlendirmeler için en verimli yaklaşımdır.
#### 301 Kalıcı Yönlendirme Kurma (Tek URL)
server {
listen 80;
server_name example.com www.example.com;
location /old-page {
return 301 https://example.com/new-page;
}
}Bu yapılandırmada, http://example.com/old-page için herhangi bir istek kalıcı olarak https://example.com/new-page adresine yönlendirilecektir. Arama motorları dizinlerini güncelleyecek ve bağlantı öz sermayesini buna göre aktaracaktır.
#### 302 Geçici Yönlendirme Kurma
server {
listen 80;
server_name example.com;
# Temporary redirect during maintenance
location /promo-page {
return 302 https://example.com/temporary-landing;
}
}Bu yapılandırma ziyaretçileri /promo-page adresinden /temporary-landing adresine geçici olarak yönlendirir ve orijinal URL’deki SEO sinyallerini etkilemez.
#### Tüm Etki Alanını Yönlendirme (Non-WWW’den WWW’ye)
Çok yaygın bir kullanım durumu, kanonik bir etki alanını zorlamaktır — örneğin, tüm http://example.com trafiğini https://www.example.com adresine yönlendirmek:
server {
listen 80;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 443 ssl;
server_name www.example.com;
# SSL configuration here
# ...
}$request_uri değişkeni orijinal yolu ve sorgu dizesini korur, bu nedenle http://example.com/blog/post-1?ref=newsletter doğru şekilde https://www.example.com/blog/post-1?ref=newsletter adresine yönlendirilir.
#### HTTP’yi HTTPS’ye Yönlendirme (SSL Zorlama)
HTTPS’yi zorlamak bir güvenlik en iyi uygulaması ve doğrulanmış bir Google sıralama sinyalidir. Sunucunuza bir SSL Sertifikası yükledikten sonra, yönlendirmeyi aşağıdaki gibi yapılandırın:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# Your site configuration continues here
root /var/www/example.com/html;
index index.html index.php;
}Bu yapılandırma, 80 numaralı bağlantı noktasındaki tüm HTTP trafiğini yakalar ve HTTPS eşdeğerine 301 yönlendirmesi yayınlayarak tüm ziyaretçilerin ve tarayıcıların sitenizin güvenli sürümünü kullanmasını sağlar.
#### Eski Etki Alanının Tamamını Yeni Etki Alanına Yönlendirme
Web sitenizi tamamen yeni bir etki alanına geçirirken, aşağıdaki deseni kullanın:
server {
listen 80;
listen 443 ssl;
server_name old-domain.com www.old-domain.com;
ssl_certificate /etc/letsencrypt/live/old-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/old-domain.com/privkey.pem;
return 301 https://new-domain.com$request_uri;
}Bu, etki alanı geçişi sırasında tam URL yolunu korur; bu, SEO sıralamalarınızı korumak için kritiktir. Projeniz için yeni bir etki alanı kaydetmeniz gerekiyorsa, AlexHost uygun fiyatlı Alan Adı Kaydı hizmetleri sunar.
Yöntem 2: rewrite Yönergesini Kullanma (Desen Tabanlı Yönlendirmeler)
rewrite yönergesi, URL’leri eşleştirmek ve dönüştürmek için düzenli ifadeler kullanır. return öğesinden daha güçlüdür ancak daha kaynak yoğundur. Tek bir kural ile birden fazla URL deseni yönlendirmeniz gerektiğinde bunu kullanın.
#### Temel rewrite Sözdizimi
rewrite regex replacement [flag];Bayraklar:
last— Geçerlirewriteyönergelerini işlemeyi durdurur ve yeni bir konum araması başlatırbreak— Geçerli bloktaki yeniden yazma yönergelerini işlemeyi durdururredirect— 302 geçici yönlendirmesi döndürürpermanent— 301 kalıcı yönlendirmesi döndürür
#### Desen ile URL’leri Yönlendirme
Blog’unuzu yeniden yapılandırıyor ve tüm URL’leri /blog/YYYY/MM/post-slug adresinden /articles/post-slug adresine yönlendirmeniz gerektiğini varsayalım:
server {
listen 80;
server_name example.com;
rewrite ^/blog/[0-9]{4}/[0-9]{2}/(.*)$ /articles/$1 permanent;
}Bu tek kural, tüm blog URL yeniden yapılandırmasını işler, yazı başlığını yakalar ve yeni URL deseni içine ekler.
#### Birden Fazla Belirli URL’yi Yönlendirme
Az sayıda belirli URL değişikliği için, ayrı return bloklarında birden fazla location yönergesi kullanmak daha temiz ve daha performanslıdır:
server {
listen 80;
server_name example.com;
location = /about-us {
return 301 /about;
}
location = /services/web-design {
return 301 /services/web-development;
}
location = /contact-form {
return 301 /contact;
}
}= değiştiricisi location içinde tam eşleşme gerçekleştirir; bu, Nginx’te en hızlı eşleştirme türüdür.
Yöntem 3: Sorgu Dizelerine Dayalı Yönlendirme
Nginx, location bloklarında sorgu dizelerini yerel olarak eşleştirmez, ancak sorgu dizesi tabanlı yönlendirmeler için $arg_ değişkenini veya if yönergelerini kullanabilirsiniz:
server {
listen 80;
server_name example.com;
location /page {
if ($arg_id = "123") {
return 301 /new-page-123;
}
if ($arg_id = "456") {
return 301 /new-page-456;
}
}
}> Not: if yönergeleri basit durumlar için çalışırken, karmaşık yapılandırmalarda beklenmedik davranışlara neden olabilir. Nginx topluluğu bunu genellikle “if is evil” sorunu olarak adlandırır. Dikkatli kullanın ve iyice test edin.
5. Gelişmiş Yönlendirme Senaryoları
Bir Alt Dizini Başka Bir Etki Alanına Yönlendirme
server {
listen 80;
server_name example.com;
location /shop/ {
return 301 https://shop.example.com$request_uri;
}
}Sondaki Eğik Çizgileri Kaldırma
Tutarsız sondaki eğik çizgiler yinelenen içerik sorunları oluşturabilir. URL’leri sondaki eğik çizgileri kaldırarak kanonikleştirmek için:
server {
listen 80;
server_name example.com;
rewrite ^/(.*)/$ /$1 permanent;
}Dizin URL’lerine Sondaki Eğik Çizgiler Ekleme
Tersine, CMS’niz veya uygulamanız sondaki eğik çizgiler gerektiriyorsa:
server {
listen 80;
server_name example.com;
location ~ ^(/[^.]*[^/])$ {
return 301 $1/;
}
}GeoIP Kullanarak Coğrafi Tabanlı Yönlendirmeler
Birden fazla bölgeye hizmet veren web siteleri için, ngx_http_geoip_module kullanarak kullanıcıları coğrafi konumlarına göre yönlendirebilirsiniz:
geoip_country /usr/share/GeoIP/GeoIP.dat;
server {
listen 80;
server_name example.com;
if ($geoip_country_code = "DE") {
return 302 https://de.example.com$request_uri;
}
if ($geoip_country_code = "FR") {
return 302 https://fr.example.com$request_uri;
}
}6. Nginx Yapılandırmanızı Test Etme
Üretim sunucusuna değişiklik uygulamadan önce asla test etmeyin. Nginx yapılandırmanızdaki sözdizimi hatası tüm web sitenizi çevrimdışı duruma getirebilir.
Adım 1: Yapılandırma Sözdizimini Doğrulama
sudo nginx -tGeçerli bir yapılandırma için beklenen çıktı:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulHatalar görürseniz, Nginx sorunu algılandığı belirli dosya ve satır numarasını rapor edecek ve hata ayıklamayı basit hale getirecektir.
Adım 2: Değişiklikleri Uygulamak için Nginx’i Yeniden Yükleme
Yapılandırma testi geçtikten sonra, Nginx’i düzgün bir şekilde yeniden yükleyin (etkin bağlantıları kesmeden):
sudo systemctl reload nginxAlternatif olarak, tam yeniden başlatma için (etkin bağlantıları kısaca kesintiye uğratır):
sudo systemctl restart nginxÇoğu yönlendirme değişikliği için, reload yeterli ve tercih edilir.
7. Yönlendirmelerinizin Doğru Çalıştığını Doğrulama
Yapılandırmanızı uyguladıktan sonra, görevi tamamlandı olarak düşünmeden önce yönlendirmelerin tam olarak amaçlandığı gibi davrandığını doğrulayın.
Yöntem 1: Tarayıcı Testi
Tarayıcınızı açın ve eski URL’ye gidin. Doğru şekilde yeni hedefe yönlendirilip yönlendirilmediğinizi gözlemleyin. Daha fazla ayrıntı için Geliştirici Araçlarını (F12) açın, Ağ sekmesine gidin ve sayfayı yeniden yükleyin. Her adımda döndürülen durum kodları da dahil olmak üzere tam yönlendirme zincirini göreceksiniz.
Yöntem 2: Komut Satırından curl Kullanma
curl komutu, tarayıcı önbelleğinin müdahale etmeden yönlendirmeleri test etmenin en güvenilir yoludur:
curl -I http://example.com/old-page-I bayrağı yalnızca HTTP yanıt başlıklarını getirir. Yanıtta Location başlığını ve durum kodunu arayın:
HTTP/1.1 301 Moved Permanently
Server: nginx/1.24.0
Date: Mon, 01 Jan 2024 12:00:00 GMT
Content-Type: text/html
Location: https://example.com/new-page
Connection: keep-aliveTüm yönlendirme zincirini otomatik olarak takip etmek için:
curl -IL http://example.com/old-page-L bayrağı curl öğesine yönlendirmeleri takip etmesi talimatını verir ve -I ile birleştirildiğinde, zincirin her adımında başlıkları gösterir.
Yöntem 3: Çevrimiçi Yönlendirme Denetleyici Araçları
Birkaç ücretsiz çevrimiçi araç, yönlendirme zincirlerinizi görselleştirebilir ve yönlendirme döngüleri veya aşırı yönlendirme atlamaları gibi sorunları tanımlayabilir:
- Redirect Checker (redirect-checker.org)
- httpstatus.io
- Screaming Frog SEO Spider (masaüstü uygulaması, 500 URL’ye kadar ücretsiz)
Yönlendirme Döngülerini Kontrol Etme
Yönlendirme döngüsü, URL A’nın URL B’ye yönlendirilmesi, B’nin URL A’ya geri yönlendirilmesi (veya sonunda geri dönen daha uzun bir zincir) durumunda oluşur. Bu, tarayıcıların *”ERR_TOO_MANY_REDIRECTS”* gibi bir hata görüntülemesine neden olur.
curl ile döngüleri algılamak için:
curl -IL --max-redirs 10 http://example.com/old-pagecurl maksimum yönlendir
