Başlangıçta klasik ASP kullanılarak inşa edilmiş bir web sitem var. Yaklaşık bir yıl önce PHP'de yeniden yazıldı. Bu, dosya uzantılarının değişmesine neden oldu ve bazı sayfalar web sitesindeki yeni konumlara taşındı. Doğal olarak, kullanıcılarının ve arama motorlarının yeni konumlarını bulabilmesi için eski URL'lerden yeni URL'lere 301 yönlendirmeleri yaptık. Bu iyi çalışıyor.
Ayrıca, site sahibinin, kampanyayı izleyebilmelerini ve nasıl performans gösterdiğini görebilmeleri için URL'de yer alan Google Analytics kampanya izleme değişkenleri içeren bir sayfaya yönlendirecek kendi küçük URL'lerini oluşturmalarına olanak tanıyan bir araç oluşturduk.
Sahip olduğum sorun, kampanya izleme kuralları 301 yönlendirmeleriyle çakışıyor ve yönlendirmelerin hiç çalışmasını engelliyor.
Kampanya izleme kodu:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]
Gördüğünüz gibi, bir dosyanın var olup olmadığını kontrol eder ve eğer bir izleme komut dosyasına (tracking.php) yönlendirir, ardından izleme kodunu alır ve sorgudaki Google Analytics kampanya koduyla doğru URL'ye yönlendirir dize.
Bu kod aşağıdaki gibi kuralların başarısız olmasına neden olur:
redirect 301 /about.asp /about.php
redirect 301 /capabilities.asp /capabilities.php
redirect 301 /capacitors.asp /capacitors.php
İzleme kurallarının "bir dosya tracking.php'ye yönlendirme bulunmazsa" dediği gibi bunun birlikte çalışmadığı mantıklıdır. İhtiyacım olan şey, önce 301 yönlendirmelerinin çalışması için ve hiçbiri eşleşmiyorsa, izleme komut dosyasına yönlendirin. İzleme kurallarının 301 yönlendirmelerinin altına yerleştirilmesi sonuçları değiştirmez.
Bu .htaccess ile yapılabilir mi? Yoksa bir kampanya bulunmazsa, kampanya kimliğinin gerçekten yeniden yönlendirilmesi gereken eski bir sayfa olup olmadığını kontrol edip 301 yönlendirmesini oradan kontrol etmek için izleme komut dosyasını değiştirmem gerekir mi?