301 404, PHP ve MySQL ile yönlendirme

4 Cevap php

Ben oldukça kodu daha, ben yapmak isteyen ben ne bir 500 + çizgi. Htaccess dosyasını bir Joomla kurulum için 500 + sayfalık geniş bir statik web sitesi transfer ama ben, dinamik gelip isteklerini yönlendirmek için PHP'nin 301 başlık yönlendirmesi inşa kullanmaktır yeni URL'ye.

Olmadan örneğin, ben siteyi taşıdıktan sonra, aşağıdaki URL olur 404 Yani bir yönlendirme-

http://www.foo.com/old_page.html

Ben yönlendirmek isterim

http://www.foo.com/old-page.php

Yani sunucu 404 geri gidiyor eğer ilk mevcut eski URL DB kontrol etmek için, o eski URL'leri ve bunlara karşılık gelen yeni bir URL bir MySQL veritabanı oluşturmak ve istiyoruz ve eşleşmesi durumunda, sorunu bir 301 yeni URL'ye yönlendirir. Doğru, ben burada mantıklı mı yapıyorum?

Bunu nasıl yaparım? Ben mantık "konuşmak" ama gerçekten emin değilim nerede bunu gerçekleştirmek için nasıl başlamak veya PHP anlamak ise, ben gerçekten bu Apache ile çalışmak nasıl anlamıyorum, çünkü (hatta örneğin olur eğer ...) olabilir ?

Ve zaten bu yapıyorsun orada herhangi bir komut, tüm daha iyi biliyorum.

4 Cevap

Apache yapılandırmasında, ne istersen / 404handler.php script bir ErrorDocument ayarlayın. Onun çalışma bağlamda, $_SERVER['REQUEST_URI'] istenen orijinal sayfanın URI olacaktır. Veritabanı arama yapmak ve bir sayfa bulursanız, header("Location: " . $wherever) buna yönlendirmek için kullanıyor musunuz yönlendirmek istiyorum.

Aklıma basit yolu tek bir PHP komut dosyası TÜM gelen istekleri yönlendirmek için mod_rewrite (bağlantı büyük bir tanıtım öğretici) kullanmak (ya da bu yönlendirme sadece olur böylece bayrağı kullanmak olacaktır istek sorgu dizesi bir parçası olarak geçirilen istenen adresi ile) var olmayan bir dosya için olduğunu. Bu istek için nereye gitmeli oradan, PHP komut dosyası bakmak var, ve ona yönlendirmek.

Birisi http://www.foo.com/old_page.html açmaya çalışırsa Yani, mod_rewrite http://www.foo.com/redirect.php?page=old_page.html gibi bir şey göndermek istiyorum. sonra redirect.php bir veritabanı arama "old_page.html" için yeni adresi, ve oraya yönlendirir görmek için yapar.

Bunun yerine bir veritabanı oluşturma, neden sadece eski URL (yani old_page.html) ile bir sayfaya bir yönlendirme koymak değil mi?

Eğer belli veritabanı kayıtları ile bir vaka-by-case bazında yapıyoruz beri, sadece sayfaları ile bir harf ile ayrı ayrı olarak bunu yapabilirdi.

Eğer hızlı bir perl yazabilirsiniz veya eski bir sayfanın adını ve yeni sayfanın URL'sini verilen bu html sayfaları oluşturmak istersen.