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
301 yönlendirmesi, taşınan bir URL’nin yeni adresine kalıcı olarak gönderilmesidir. .htaccess içinde tek bir yol veya ortak bir dizin için Redirect 301, koşul, alan adı, protokol ya da değişken URL parçaları gerektiğinde mod_rewrite kullanılır. Kalıcı kurala geçmeden önce 302 ile test etmek yararlıdır; ancak 301 yanıtı istemci ve ara katmanlarda önbelleğe alınabileceği için test sonrasında eski önbellek etkilerini de hesaba katın.

Tek bir URL’yi yönlendirme​


Eski yol ile yeni adres arasında doğrudan eşleşme varsa en kısa yöntem Redirect yönergesidir:

Kod:
Redirect 301 /eski-sayfa https://example.com/yeni-sayfa

Örneğin:

Kod:
Redirect 301 /urunler/eski-model https://example.com/urunler/yeni-model

.htaccess içinde eski yol / ile başlamalıdır. Redirect, belirtilen yolun altındaki ek yolu da hedefe taşıyabilir. Bu nedenle /blog için yazılan genel bir kural, /blog/yazi gibi alt yolları da etkileyebilir. Yalnızca belirli bir URL’yi değiştirmek istiyorsanız yolun kapsamını ve olası alt yolları mutlaka kontrol edin.

Basit bir dizin taşınmasında da aynı yaklaşım kullanılabilir:

Kod:
Redirect 301 /eski-kategori/ https://example.com/yeni-kategori/

Bu kural, eski kategorinin altındaki yolları yeni kategori önekiyle eşleştirir. Tekil dosya eşleşmesi veya daha karmaşık desen gerekiyorsa RedirectMatch ya da mod_rewrite değerlendirilmelidir.

Desen ve koşul gerektiren yönlendirmeler​


URL’nin bir bölümünü koruyarak yönlendirme yapmak için, web kök dizinindeki .htaccess dosyasında şu yapı kullanılabilir:

Kod:
RewriteEngine On

RewriteRule ^eski-kategori/(.*)$ https://example.com/yeni-kategori/$1 [R=301,L]

Örneğin /eski-kategori/urun isteği /yeni-kategori/urun adresine gider. .htaccess bağlamında RewriteRule deseni genellikle başlangıç / işareti olmadan yazılır. [R=301,L] dış yönlendirme üretir ve mevcut kural turunda başka RewriteRule yönergelerinin işlenmesini durdurur.

Apache’nin güncel belgelerinde basit URL işlemleri için Redirect veya RedirectMatch, sorgu dizesi ya da daha karmaşık koşullar için mod_rewrite önerilir. Aynı kapsamda iki modülü gereksiz biçimde karıştırmak, kuralların hangi sırayla uygulandığını anlamayı zorlaştırabilir.

Hedef HTTPS kullanıyorsa sertifika ve hedef sayfa yönlendirmeden önce çalışmalıdır. TLS bir proxyde sonlanıyorsa arka sunucunun HTTPS algısı farklı olabilir; bu durumda güvenilir proxy ve origin yapılandırması doğrulanmadan HTTPS koşulu eklemeyin.

Yöntem seçimini kolaylaştırma​


İhtiyacı belirleyerek gereksiz karmaşıklığı önleyebilirsiniz:

İhtiyaçUygun yöntemDikkat
Basit yol veya dizin taşımaRedirect 301Alt yolların hedefe eklenmesi
Tam yol eşleştirmeRedirectMatchDeseni başlangıç/bitiş ile sınırlama
Değişken yol veya sorgu koşulumod_rewriteDizin bağlamı ve sorgu dizesi davranışı

Uygulama ve test adımları​


  1. Mevcut .htaccess dosyasının yedeğini alın. Dosyanın, yönlendirmek istediğiniz alan adı ve dizin için gerçekten kullanılan web kökünde bulunduğunu doğrulayın.
  2. Eski URL’nin, yeni URL’nin ve varsa sorgu parametrelerinin nasıl davranacağını yazılı olarak belirleyin.
  3. Kuralı ilk denemede [R=302,L] ile test edin. Böylece kalıcı yönlendirme önbelleğiyle uğraşmadan sözdizimi ve hedefi kontrol edebilirsiniz.
  4. Gizli tarayıcı penceresinde eski URL’yi açın. Yanıtın gerçekten 3xx olduğunu ve hedefe gereksiz ara adres olmadan ulaştığını kontrol edin.
  5. Yeni adresin 200 gibi beklenen bir yanıt verdiğini ayrıca doğrulayın; yalnızca yönlendirme görülmesi hedef sayfanın çalıştığı anlamına gelmez.
  6. Sonuç doğruysa 302 değerini 301 yapın ve eski URL’den yeni URL’ye, yeni URL’den de tekrar eski URL’ye dönüş olmadığını test edin.

Sık yapılan hatalar​


.htaccess dosyalarının kullanılabilmesi sunucu yapılandırmasına bağlıdır. AllowOverride izinleri uygun değilse dosya yok sayılabilir veya kullanılan yönergeler 500 hatasına neden olabilir. mod_rewrite kuralları için ilgili modülün etkin olması da gerekir.

En yaygın sorunlardan biri, hedef adresin de aynı genel kurala uymasıdır. Örneğin her isteği /yeni-sayfa adresine gönderen bir kural, hedef adresi ayırt etmiyorsa döngü oluşturabilir. Genel kuralları daraltın; gerekiyorsa RewriteCond ile kaynak yolu veya alan adını açıkça sınırlayın.

Bir başka hata, basit bir Redirect işi için uzun ve birbiriyle çakışan RewriteRule kuralları yazmaktır. Önce en basit çalışan yöntemi seçin. Birden fazla kural kullanıyorsanız daha özel yolları genel kurallardan önce değerlendirin ve eski URL’nin doğrudan son hedefe gitmesini sağlayın.

Sık sorulan sorular​

301 POST yöntemini korur mu?​

Garanti etmez; bazı istemciler POST isteğini GET olarak yeniden gönderir. Yöntem ve gövdenin korunması gerekiyorsa 308 gibi uygun yanıtı ve gerçek form/API akışını ayrıca değerlendirin.

Sorgu parametreleri nasıl korunur veya kaldırılır?​

mod_rewrite hedefinde yeni sorgu dizesi yoksa mevcut sorgu varsayılan olarak korunur. Hedefte yeni bir sorgu varsa eski sorgunun yerine geçer; QSA ikisini birleştirmek, QSD ise eski sorguyu atmak için kullanılır. Bu ayrımı Redirect yönergesine aynı bayraklar varmış gibi uygulamayın.
 

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.