- Konu sahibi
- #1
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
Aşağıdaki örnek Apache 2.4 içindir. Önce geçici
Eski alan adı
Koşul yalnızca eski hostu ve belirtilen
Bir başlık kontrolü örneği:
Geçici testte beklenen durum
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ü,
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.
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.
.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?
| Durum | Yaklaşım | Kontrol |
|---|---|---|
| Aynı dizin birden fazla hosta hizmet veriyor | Host koşullu mod_rewrite | Yeni host da tekrar yönlenmemeli |
| Eski alan adına ayrılmış sanal konak var | Redirect veya mod_rewrite | Kural kapsamı sanal konakla sınırlandırılır |
| Yalnız DNS paneline erişim var | HTTP yönlendirme hizmeti gerekir | A/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
- 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.
- Mevcut dosyanın kopyasını yerelde veya webden erişilemeyen güvenli bir konumda koruyun.
- Örnekteki alan adlarını kendi değerlerinizle değiştirip geçici kuralı kaydedin.
- Ana sayfa, alt yol, sorgu parametresi ve kodlanmış karakter içeren adreslerde durum kodu ile Location başlığını kontrol edin.
- 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.
- Testler doğruysa
R=302değeriniR=301yapı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.