Q2A (Question2Answer) çekirdeğinde, URL yapılandırması veya SEO eklentileri üzerinden yapılan kalıcı yönlendirmelerde (301) genellikle wp_redirect yerine PHP'nin yerel header() fonksiyonu veya framework'ün kendi yönlendirme mekanizması kullanılır. Sorununun kök nedeni büyük ihtimalle, Q2A'nın default davranışının veya kullandığın eklentinin, "URL değişimi" olayını geçici bir durum (session bazlı veya önbellek tazelemesi) olarak algılamasıdır. 302 kodu, tarayıcının veya crawlbot'ın sayfanın kalıcı olarak taşınmadığını, sadece o anlık bir duruma baktığını düşünmesine neden olur. Bu da SEO değerinin (link equity) yeni URL'ye tam olarak geçmesini engeller ve Google Search Console'da "Duplicate without user-selected canonical" veya yönlendirme döngüsü uyarılarına yol açar.
1. .htaccess Dosyasını Kontrol Et
Q2A'nın kök dizinindeki .htaccess dosyasında, mevcut URL yapılandırmasını zorlayan RewriteRule komutları vardır. Standart Q2A, eski URL'leri yeni URL'lere otomatik olarak 301 ile yönlendirmez; bu işi genelde PHP tarafında yapar. Ancak, en temiz ve tarayıcı seviyesinde en hızlı çözüm .htaccess'tan geçmektir.
Eski (hatalı) URL'nden yeni (doğru) URL'ne şu şekilde manuel bir kural ekleyebilirsin:
`apache
RewriteEngine On
RewriteRule ^18928/ https://turklersoruyor.com/yeni-dogru-url/ [R=301,L]
`
Not: Bu kuralı, diğer Q2A yönlendirme kurallarından önce (dosyanın en üstüne, RewriteEngine On satırının hemen altına) eklemelisin. L flag'i, bu kural eşleşirse diğer kuralların çalışmamasını sağlar.
2. PHP Kod Düzeltmesi (Eklenti veya Çekirdek)
Eğer bu olayı otomatik hale getirmek istiyorsan (örneğin her URL değişikliğinde), Q2A'nın qa_urls.php veya kullandığın SEO eklentisinin koduna bakmalısın. Yönlendirme yapan fonksiyonda genellikle şu satırı bulacaksın:
header( 'Location: ' . $new_url, true, 302 );
Buradaki 302 değerini 301 olarak değiştirmen gerekir:
header( 'Location: ' . $new_url, true, 301 );
Ancak, bu yöntemi önermem. Çünkü PHP üzerinden yapılan yönlendirmeler, .htaccess'e göre daha yavaştır ve sunucu kaynaklı gecikmelere yol açabilir. Ayrıca, önbellek (cache) eklentileri kullanıyorsan, PHP'deki yönlendirme bazen önbelleğe takılıp 302 olarak okunmaya devam edebilir.
3. Önbelleği Temizle
Yönlendirme kodunu değiştirdikten sonra mutlaka sitenin önbelleğini (Cloudflare, W3 Total Cache, LiteSpeed vb.) ve tarayıcı önbelleğini temizle. Google'ın yeni durumunuzu görmesi için birkaç gün sürebilir; bu sürede eski 302 sinyallerinin etkisi devam edebilir.
Tek bir veya birkaç URL için .htaccess çözümünü tercih et. Bu yöntem, sunucu seviyesinde (Apache/Nginx) çalıştığından, PHP'nin yüklenmesini beklemeden anında yanıt verir ve SEO açıdan en "temiz" sinyaldir. Eğer yüzlerce URL değiştiyse, o zaman toplu halde .htaccess'e yazdırabilirsin veya PHP tarafındaki 302 -> 301 değişimini uygulayıp, sitenin önbellek katmanını tamamen devre dışı bırakarak test etmelisin.
Unutma, 301 yönlendirmelerinde Trailing Slash (sondaki /) tutarlılığı da önemlidir. URL'lerindeki slash yapısını Q2A ayarlarındaki "URL format" seçimiyle eşleştirdiğinden emin ol.