2011-06-21 18 views
5

için biz ŞimdiYeniden Yazma Kök Dizin Yolu "/" JavaScript

RewriteBase "/to/some/new/directory" 

sahip .htaccess

$_SERVER['DOCUMENT_ROOT'] = "to/some/new/directory"; 
//Now the "/" which represent the ^(above) path 

kullanarak PHP belge kök dizin yolunu değiştirebilir, ben kök değiştirmeniz gerekir javascript'te kullanılacak dizin yolu. Nasıl yapılır?

Şu anda, benim kişiselleştirilmiş kök dizinine statik yolunu içeren bir değişken bildirerek ve

var root = "../to/new/path"; 
document.location = root+"/somepage.php"; 

Senaryo olarak kullanıyorum

Ben senin için, senaryo hakkında biraz bilgi gerektiğini düşünüyorum çocuklar benim fikrim yakalamak için

varsayılan Web Kök Dizini

http_docs/ 
Bir ana klasör Şimdi
http_docs/application <-- contains the actual application 
http_docs/js <-- contains the script 
http_docs/index.html 

ihtiva iç

, Uygulama ayrıca "/"/bazı/yolda temsil edecek erişilen eğer yeni içerik veya diğer kaynakları, yükleme, güncelleme, düzenleme için ajax özelliğini içeriyor/i/aramadı/uygulama/bir/yol/i/adlandırılan

Ben

var root = "application/"; 

gibi statik bir değişken tanımlayabilirsiniz bu soruna etrafında gelip

gibi bir yerde kullanmak için

Tek bir kullanım için, yolu statik olarak tanımlamak çok önemli olmayabilir, ancak, uygulama büyüdüğünde ve bazı değişiklikler js bölümünde verdiğim tüm yolları değiştirmeme neden olabilir. Ben düşünmek, mantıklı olurdu, sadece, ben PHP, <img src="/resources/img1.jpg" />

kullanarak, bu soruyu açıklamak için elimden gelenin en iyisini yapmaya çalıştım, eğer anlaşılır değilse, lütfen topluluk, onların anlamasına yardımcı olun. Sorumu değiştirmenizi rica ediyorum.

+4

Soru nedir? "Kök dizini değiştir" ile ne demek istiyorsun? –

+0

Her ikisi de Sunucu Tarafında ilgileniyor. Peki, JS ile anlaşmak istediğiniz anlaşma nedir? –

+0

@Stein G. Strindhaug, javascript – Starx

cevap

5

REDAKTE : Bir img etiketi eklemek ve bağıl URL'ler kullanın, onlar indeks dosyasının yoluna bağlı olacaktır index.html dosyasından dahil JavaScript varsayarsak güncellenen soru yanıtlamaya çalışmak denir . Yani <img src='application/resources/img1.jpg'> sadece iyi çalışırdı. Eğer betik birkaç alt düzey için çalışacaksa (örneğin, sayfa "application/etc/etc2/somePage).html "application/resources /" öğesinden görüntüler "), mutlak URL'leri kullanmak daha kolay olabilir ve uygulamanın" köküne "mutlak url tutan php tarafından oluşturulan her sayfada bir javascript bloğu içerebilir. url tercüme edilirse getTheRootUrl() ihtiyacınız kök url veren bir yöntem veya sunucu değişkendir

<!-- included by php in all html pages, e.g. in defautlHeadter.php --> 
<script type="text/javascript"> 
    var rootUrl = "<?= getTheRootUrl() ?>"; 
</script> 

./Eğer root hardcode gerekebilir (php tarafından görülebilir ne apache vb dış tarafından) remapped php yönteminde url ancak en azından kök dizini değiştirirseniz değiştirilecek tek bir dosya olacaktır ..

Daha sonra'yi kullanarak uygulamanın/web sitesinin herhangi bir yerinde mutlak yollar belirtmek için kök URL'yi kullanabilirsiniz. Uygulamanın herhangi bir yerinde.

+0

Tamam, daha sonra – Starx

+0

sorumu yeniden hatırlamaya çalışacağım Bu anwer bana göre, her neyse ... -1 – Starx

+0

Neden bu cevabı yararlı buluyorsun? @Voter, lütfen, bilmek istiyorum ... Bu soru benim cevabım için ne kadar yararlı oldu? – Starx

-1

keresinde ben de gösteri amaçlı kadar kesmek o doğrultuda bu

static function GetRelativePath($path) 
{ 
    $dr = $_SERVER['DOCUMENT_ROOT']; //Probably Apache situated 

    if (empty($dr)) //Probably IIS situated 
    { 
     //Get the document root from the translated path. 
     $pt = str_replace('\\\\', '/', Server::GetVar('PATH_TRANSLATED', 
      Server::GetVar('ORIG_PATH_TRANSLATED'))); 
     $dr = substr($pt, 0, -strlen(Server::GetVar('SCRIPT_NAME'))); 
    } 

    $dr = str_replace('\\\\', '/', $dr); 

    return substr(str_replace('\\', '/', str_replace('\\\\', '/', $path)), strlen($dr)); 
} 

... Something, gibi bir şey kullanmak

window.app_absolute = '<?php echo GetRelativePath(dirname(__FILE__)); ?>' 

ayarlamak için, böyle bir şey yaptı.

+1

Cevabınız hakkında biraz daha ayrıntılı bilgi verebilir misiniz? 'Bu satırlar boyunca bir şey ????????????? – Starx

+0

Üzgünüm, biraz php yazdım ama filtre tarafından silindi. Cevabı daha fazla ayrıntıyla güncelledim. – Xedecimal

+0

Peki, o zaman window.app_absolute 'ne içerecek? Geçerli dosyalar, göreceli yol bence – Starx

İlgili konular