2010-04-26 54 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" /> 

现在浏览器会寻找你的样式表从文档根目录中以绝对路径。

顺便说一句,读你的问题的人不能轻易掌握的情况,因为你似乎参考不同的职位。我相信最好在一篇文章中描述整个问题,因为我没有找到你以前的问题。