html / php: Mutlak url nasıl ele?

4 Cevap php

Html <base> etiketi güvenli tarayıcı desteği açısından kullanımı kolay mı? Ya da ben daha sonra bir mutlak url yapar <a href="<?=BASE?>somepage.html">somepage</a> hangi böyle eklemek PHP ile bir kök yolunu oluşturmak gerekir.

Bu gibi baz etiketini kullanarak <base href="<?=BASE?>" /> Sonra bu gibi bağlantıları kullanmak mümkün duyuyorum

<a href="somepage.html">somepage</a>

şimdi ben sadece taban etiketini kullanarak olmadan bunu yapmak çok daha kolay olacağını tam olarak farkında değilim:

<a href="/somepage.html">somepage</a>

ama nasıl http://localhost/testsite/ bir taban url ile daha sonra yerel test??

edit: thanks guys, your the people who make the stackoverflow community so great :)

4 Cevap

2 yıl sonra tekrar bu soruya geliyorsun, ben şimdi mutlak URL'leri işlemek için en iyi yolu, bu gibi örneğin, bir sarıcı işlevi URL koymak olduğunu biliyoruz:

<a href="<?php echo url('/somepage.html');?>">somepage</a>

sarıcı işlevi daha sonra size URL kullanımı üzerinde tam kontrol sağlar

function url($url){
    if(strpos($url,'/')===0){
        return 'http://localhost/testsite'.$url;
    }else{
        return $url;
    }
}

Benim tavsiyem bir bölü çizgisi ile başlayan mutlak URL'ler kullanmak olacaktır, ve sadece kendi belge kök /localhost/testsite/ kullanan bir sanal konak kuracak. Sonra mutlak URL'leri bırakın ve sadece http://testsite/ lokal gibi bir şey sitenize erişebilir.

Kesinlikle bu bazı düşünce verdik ama ben karışımı içine bir kez daha göz atmak istiyorum. Eğer bir web uygulaması yazıyorsanız, size gelecekte herhangi bir alt-dizine yükleyebilirsiniz ve az değişiklik ile çalışmaya devam edecek böyle bir şekilde inşa edilmelidir.

Bu href ait, src en, aksiyon en ve hatta HTTP Yer başlıkları böyle bir değişimin farkında olmak gerekir anlamına gelir. I <?php echo SITE_BASE ?> ya da siz ne aramak istediğiniz ile Uri prepending tavsiye yüzden.

Tartışma SITE_BASE bir bölü içermelidir olmadığı gibi öfke olabilir.

Ben PHP etiketleri bir temel dizini çıktısı, ilk seçenek gibi

<a href="<?=BASE?>somepage.html">somepage</a>

çok iyi. Bu (sizin hosting paketleri üzerinde sanal sunucu ayarlarını değiştirmek mümkün olmayabilir) yüklü olduğu dizin sitenize bağımsız kılar. Bu, şimdiye kadar olması gerekiyorsa, farklı bir sunucu / altalana görüntü dosyalarını outsource da kolaydır.

<base> tarayıcı desteği açısından kullanımı güvenlidir, ama ben şahsen kod yönetilebilirliğinin nedenlerle bunu kullanarak karşı şiddetle tavsiye ederiz. <base> URL'ler işlenir nasıl kurallarını değiştirir; Eğer all bağıl URL'ler için akılda tabanını tutmak gerekir; ve gözden kaçırmak çok kolaydır. Bir programlama açısından bakıldığında, kirli bir düzeltme gibi hissediyor.