Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
Bir alan adını başka bir alan adına taşırken eski alan adının karşıladığı Apache sanal konağında HTTP yönlendirmesi oluşturabilirsiniz. Sunucu dizin bazlı yapılandırmaya izin veriyorsa kural eski alan adının belge kökündeki .htaccess dosyasına eklenir. DNS kaydı değiştirmek tek başına tarayıcının adres çubuğunu yeni alan adına taşımaz.

Aşağıdaki örnek Apache 2.4 içindir. Önce geçici 302 ile deneyin; hedefi doğruladıktan sonra kalıcı 301 kullanın. Hedef alan adı kuralda sabittir; ziyaretçinin gönderdiği host değerinden üretilmez.

Yolu koruyan yönlendirme örneği​


Eski alan adı eski.example.com, yeni alan adı example.com olsun. Eski sitenin belge köküne şu kuralı ekleyin; mevcut uygulama kuralları varsa genel yakalama kurallarından önce değerlendirilmesini sağlayın:

Kod:
RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?eski\.example\.com(?::[0-9]+)?$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=302,END,NE]

Koşul yalnızca eski hostu ve belirtilen www varyantını eşleştirir. REQUEST_URI istek yolunu korur; hedefte yeni sorgu dizesi belirtilmediğinden mevcut sorgu parametreleri de varsayılan olarak aktarılır. Örneğin /hakkimizda?ref=test aynı yol ve parametreyle yeni alana gider. Yeni sitede bu yolun gerçekten karşılığı bulunmalıdır.

END dizin bağlamındaki yeniden yazmayı bitirir. NE dış yönlendirmede mevcut kaçışların yeniden kaçırılmasını önler; bu bayrağı kullanıcı girdisinden rastgele hedef oluşturmak için kullanmayın. Kodlanmış karakter içeren yolları da kendi uygulamanızda sınayın.

Hangi yöntem uygun?​


DurumYaklaşımKontrol
Aynı dizin birden fazla hosta hizmet veriyorHost koşullu mod_rewriteYeni host da tekrar yönlenmemeli
Eski alan adına ayrılmış sanal konak varRedirect veya mod_rewriteKural kapsamı sanal konakla sınırlandırılır
Yalnız DNS paneline erişim varHTTP yönlendirme hizmeti gerekirA/CNAME kaydı URL yönlendirmesi değildir

mod_rewrite her yönlendirmede zorunlu değildir. Host koşulu veya daha ayrıntılı eşleştirme gerektiği için burada kullanılıyor. Sunucunun ana yapılandırmasına erişiminiz varsa kuralı uygun sanal konakta yönetmek de mümkündür.

Uygulama ve doğrulama​


  1. Eski alan adının DNS ve sanal konak ayarlarının isteği doğru Apache sunucusuna ulaştırdığını doğrulayın.
  2. Mevcut dosyanın kopyasını yerelde veya webden erişilemeyen güvenli bir konumda koruyun.
  3. Örnekteki alan adlarını kendi değerlerinizle değiştirip geçici kuralı kaydedin.
  4. Ana sayfa, alt yol, sorgu parametresi ve kodlanmış karakter içeren adreslerde durum kodu ile Location başlığını kontrol edin.
  5. Yeni alan adındaki hedeflerin açıldığını ve eski alana geri dönen bir yönlendirme döngüsü bulunmadığını doğrulayın.
  6. Testler doğruysa R=302 değerini R=301 yapıp aynı kontrolleri tekrarlayın.

Bir başlık kontrolü örneği:

Kod:
curl -I "https://eski.example.com/hakkimizda?ref=test"

Geçici testte beklenen durum 302, Location değeri https://example.com/hakkimizda?ref=test olur. Bu örnek çıktı beklentisidir; canlı sunucuda uygulanmış bir test sonucu değildir. Tarayıcıdaki kalıcı yönlendirme önbelleği teşhisi zorlaştırabileceğinden ilk kontrolü yalnız eski tarayıcı sekmesine dayandırmayın.

Sık yapılan hatalar​


Dizin bağlamında RewriteRule deseni baştaki eğik çizgiyi içermez. Ayrıca yanlış host koşulu, mevcut CMS kuralları veya iki sunucunun birbirine yönlenmesi döngü oluşturabilir.

Kural hiç uygulanmıyorsa doğru belge kökünü, mod_rewrite modülünü ve AllowOverride FileInfo ya da uygun AllowOverrideList izinlerini kontrol edin. Bir 500 yanıtında hata günlüğündeki sözdizimi/yönerge ayrıntısını inceleyin ve gerekirse değişikliği geri alın. Tek başına sunucu ana yapılandırmasının sözdizimi testi, her istekte okunan tüm .htaccess dosyalarının doğru olduğunu kanıtlamaz.

Sık sorulan sorular​


Eski alan adının HTTPS sertifikası gerekli mi?​


Evet. HTTPS bağlantısında TLS doğrulaması HTTP yönlendirmesinden önce gerçekleşir. Eski adreste geçerli sertifika yoksa kullanıcı yeni adrese yönlenmeden sertifika hatası görebilir.

POST isteği taşıyan API için 301 veya 302 yeterli mi?​


Bu kodlar bazı istemcilerde POST isteğinin GET olarak devam etmesine izin verir. Metot ve gövdenin korunması gerekiyorsa 307/308 semantiğini değerlendirin; istemci, yetkilendirme ve yeni hedef davranışını ayrıca test edin.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.