Bağımsız url yönlendirme dizin olan bir web tutmak için nasıl

4 Cevap php

Ben url yönlendirmesi kullanan bir PHP web sitesi geliştiriyorum. Ben HTML her yolunu değiştirmek zorunda kalmadan http://example.com/site/ için http://site.example.com/ taşınmış olabilir, böylece site dizin bağımsız olmak istiyorum. Ben böylece css dosyaları, görüntü ve benzeri yönlendirme tabi olmayan dosyaları, bağlantı olduğumda sorun çıkageldi.

Örneğin, index denetleyicisi eylem için görünüm welcome görüntü içerdiğini varsayalım img/banner.jpg. Sayfa url http://site.example.com/welcome ile talep edilirse, tarayıcı gayet ki, http://site.example.com/img/banner.jpg olarak görüntüyü isteyecektir. Sayfa url ile talep Ama eğer http://site.example.com/welcome/index, tarayıcı welcome bir dizin ve olan http://site.example.com/welcome/img/banner.jpg olarak görüntü almaya çalışacağız düşünüyorum edecek Açıkçası yanlış.

Zaten bazı seçenekler kabul ettik, ama hepsi bana eksik gibi görünüyor:

  • Isteklerini yönlendirmek için yeniden url kullanın (*.css | *.js | ...) veya (css/* | js/* | ...) doğru yolu.

    Problems: Her uzatma yeniden yazma kuralları adlandırılmış olması gerekir. Birisi yeni filetype (örneğin bir mp3 dosyası) eklemek istiyorsanız, bunun yeniden yazılamaz olmaz.

  • Prepend the base path to each relative path with a php function. For example:
    <img src="<?php echo url::base(); ?>img/banner.jpg" />

    Problems: Karmakarışık görünüyor; css - yollarını içeren ve js dosyaları PHP ile işlenmiş olması gerekir.

Yani, bir web dizini bağımsız nasıl tutabilirim? Ben ile geldi olanlardan daha iyi / temiz bir yolu var mı?

4 Cevap

Siz kafasına koymak olabilir

<base href="<?php echo url::base(); ?>" />

Bu tarayıcı bu yolu göreli olmayan mutlak URL'ler talep anlamına gelecektir. However I am not sure how this would affect URLs embedded in CSS files etc. Bu CSS dosyalarında tanımlanan yolları etkilemez. (Teşekkürler mooware)

tomhaigh iyi bir nokta vardır, ve daha da araştırmak için faydalı olacaktır.

MSDN göre, base etiketi vb stil sayfaları, görüntüler dahil olmak üzere tüm dış kaynaklardan için çalışıyor

Lütfen <a> çok etiketler <base> şey çalışacaktır, ancak bu etkiler olacak hatırlamamız gerekiyor. Bu örneği ele alalım.:

<!-- this page is http://oursite.com/index.html -->
<html>
 <head>
    <base href="http://static.oursite.com/" />
 </head>
 <body>
    <img src="logo.gif" alt="this is http://static.oursite.com/logo.gif" />
    <a href="/login">this links to http://static.oursite.com/login which is not what we wanted.  we wanted http://oursite.com/login</a>
 </body>
</html>

Size bağlantıları oluşturmak için PHP işlev çağrısı kullanırsanız sadece emin absolute URL dışarı tükürür yapmak gibi bu bir sorun olmayacaktır. Ama eğer (veya tasarımcılar) el-kodu <a> etiketler sonra sen şimdi <a> yerine birlikte, yine aynı sorun ile sıkışmış konum <img> .

EDIT: Ben yukarıdaki paragraf yaptığımız gibi farklı bir ana bilgisayar adından görüntüleri hizmet üstleniyor eklemek gerekir. Eğer yoksa o zaman tabii ki bir sorun olmayacaktır.

Belki de ben bir şey eksik, ama sadece ben do / es (ve ben herkes düşünce) ne yapamaz? Yani ortak bir dizin yani vb tüm görüntüleri, css, Javascript'leri, koyun:

/inc/images/
/inc/css/
/inc/javascript/
etc

Ve sonra, yani taban-göreli URL'ler ile başvuru:

<img src="/inc/images/foo.jpg" />
etc

?