2010-04-26 36 views
0

好吧,我做了頁面的框架,知道我分裂了我的設計top.php和bottom.php。在top.php中,它鏈接到style.css和ajax_framework.js等等。現在這個工程很好,直到我試圖在top.php & bottom.php中包含videos/index.php(另一個dirr)時,我確實喜歡這樣:鏈接如何PHP/HTML

include "../top.php"; 
<-- and the originally index.php --> 
include "../bottom.php"; 

現在,當我進入網站,它不會加載的style.css,可能是因爲它認爲的style.css需要在視頻/目錄下,也一樣有是兩個文件都在ajax_framework.js父母../目錄。

現在我該怎麼辦?一些方法或技術可以很好地解決這個問題?所以我不必將style.css和ajax_framework.js複製到每個目錄中,因爲後來如果我想改變某些內容,我需要在所有目錄中進行更改,這將是我最後一件事情。希望你有一些不錯的技術,感謝你

回答

2

你至少有三種選擇:

  1. 讓所有的資源URL絕對URL。例如,將<script type="test/javascript" src="scripts/foo.js">更改爲<script type="text/javascript" src="/scripts/foo.js">。如果你可以做到這一點,那麼它是目前較不具侵入性的解決方案。

  2. 設定一個恆定的BASEDIR你包括top.php和每一個資源相對路徑使其前:

    // in your file that includes top.php 
    <?php define('BASEDIR', '..'); ?> 
    // in top.php 
    <?php if(!defined('BASEDIR')) define('BASEDIR', '.'); ?> 
    <link rel="stylesheet" type="text/css" href="<?php echo BASEDIR; ?>/style.css"/> 
    
  3. 添加<base> HTML代碼,請<head>(這個太爛了,不這樣做):

    <base href="/foo"></base> 
    <!-- now all srcs, hrefs and whatnot are relative to /foo --> 
    

    它吮吸,因爲即使會相對於它。因此,如果您在頁面qaz.php上使用<a href="#foo">這樣的鏈接,並且使用<base href="/bar">,則鏈接將指向/bar#foo而不是qaz.php#foo

+0

大聲笑。我之前沒有看到#1,直到我添加了我的答案!很zneaky。 – webbiedave 2010-04-26 17:17:36

+0

BASEDIR運作良好! – Karem 2010-04-26 17:20:18

+0

@webbiedave:我保證這只是一個巧合。 – zneak 2010-04-26 17:25:28

1

你不發表您的HTML,但我會假設你不使用絕對URI的。你可能做這樣的事情:

<link rel="stylesheet" type="text/css" href="css/style.css" />

當你應該做的是這樣的:

<link rel="stylesheet" type="text/css" href="/css/style.css" />

0

答案很簡單:

在頂部。PHP的我想你有這樣的事情:

<link type="text/css" href="style.css" rel="stylesheet" /> 

只要改變它是一個絕對的URL通過添加斜線的開始,像這樣:

<link type="text/css" href="/style.css" rel="stylesheet" /> 

現在瀏覽器會尋找你的樣式表從文檔根目錄中以絕對路徑。

順便說一句,讀你的問題的人不能輕易掌握的情況,因爲你似乎參考不同的職位。我相信最好在一篇文章中描述整個問題,因爲我沒有找到你以前的問題。