301 yönlendirmeleriyle çakışan ev yapımı URL kısaltıcı yönlendirmesi


11

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?

Yanıtlar:


5

mod_aliasYönlendirmelerinizi mod_rewriteyönergelere dönüştürmeyi deneyin .


Düzenleme: Aşağıdaki örnekte, eski ASP dosyalarını aynı yol altında PHP dosyalarıyla değiştirdiğiniz varsayılmaktadır.

RewriteEngine on

# *.asp -> *.php
RewriteRule (.*)\.asp$ /$1.php [R=301,L]

# tracking script
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]

... veya normal ifade değişkenini atlayabilir ve eski URI'lerin her biri için açık bir yönlendirme ayarlayabilirsiniz:

RewriteRule about\.asp$ /about.php [R=301,L]
RewriteRule capabilities\.asp$ /capabilities.php [R=301,L]
RewriteRule capacitors\.asp$ /capacitors.php [R=301,L]

Düzenleme # 2: Karşılaşacağınız durumların çoğunu kapsaması gereken bir örnek:

RewriteEngine on

# Changes to path + Query String Append
RewriteRule ^/path/to/old\.asp$ /path/to/new/about.php [R=301,L,QSA]

# *.asp -> *.php + Query String Append
RewriteRule ^(.*)\.asp$ $1.php [R=301,L,QSA]

# tracking script
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]

Neyi kastettiğinden emin değilim. Sorumda gösterdiklerime dayalı bir örnek verebilir misiniz?
John Conde

Düzenleme için teşekkürler. Şimdi mantıklı. Sanırım son sayım yolları değişmiş olan dosyalar ile ne yapmak olurdu? Mümkün mü? Yoksa çok mu soruyorum?
John Conde

Bu dosyalar için açık yönlendirmeler ayarlayabilirsiniz (yolların çoğu değiştiyse, yapılandırmanın korunmasını sağlamak için tüm dosyalar için açık yönlendirmeler de kullanabilirsiniz).
danlefree

[R=301,L]Her yönlendirmeden sonra sorunuma neden olan şey olduğundan şüpheleniyorum . Bunu deneyeyim ve size neler olduğunu bildireceğim.
John Conde

*.asp -> *.phpJoker iyi çalışıyor. Doğrudan geçiş olmayan ve sorgu dizeleri olan sayfalar için ayrı kurallar zahmetlidir. Ama bu doğru bir yol gibi görünüyor. Eğer o parçayı halledemezsem bu konuda yeni bir soru soracağım.
John Conde

-1

Yönlendirmeyi tersine çevirir ve başlangıçta olduğu gibi bırakırım. YENİ sitenizi ESKİ sitenize yönlendirin. ESKİ siteniz muhtemelen zaten geri bağlantı, web sitesi yaşı ve SEO'dan yararlanıyor. Bunu, daha düşük bir sayfa sıralamasıyla daha yeni bir siteyle değiştirmek, kaybetmek utanç verici olacaktır. Google yönlendirmeleri cezalandırır. YENİ sitenizin henüz SEO'su olmayacak, bu yüzden bir yönlendirme kullanmak daha iyi :)


Gerilemenin iyi bir çözüm olduğunu düşünmüyorum. Orijinal site hemen hemen her şekilde kötü yapıldı. Siteyi daha hızlı, daha kullanışlı, erişilebilir, düzenli ve bakımı kolay hale getirdik. Yönlendirmelerden hiçbir şey kaybetmeyecekler çünkü niş bir site ve başlangıçta çok az bağlantıya sahipti ve çoğu yönlendirmeye gerek duymayan ana sayfaya gitti. Bu yüzden kesinlikle hiçbir şey kazanmadığımız ve çok kaybettiğimiz için eski siteye geri dönmek istemiyoruz.
John Conde

Bilginize, Google yönlendirmeler için cezalandırmaz. Yönlendirmelerin sahip olduğu tek sorun, çok derin bir zincirleme yaptıklarında onları takip etmeyi bırakırlar ve 301 yaparken bazı PR kaybedilir, ancak miktar hiç yapmama alternatiflerine kıyasla önemsiz ve buna değer.
John Conde
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.