在包含的php文件中使用绝对路径的替代方法

时间:2012-06-22 21:41:20

标签: php include absolute-path

我有一个名为“header.php”的文件,我在我网站的每个页面都包含这个文件,这个文件包含我的服务器上其他文件的链接,如css文件,jquery插件等等。现在我正在使用这些链接的绝对路径,以便它们可以处理与header.php文件不在同一目录中的文件,这样可行,但正如您在下面的示例中所看到的,如果您的标题,事情开始变得非常难以管理.php文件包含很多链接(我的链接),所以我想知道在header.php文件中是否还有其他替代方法可以像我在这里一样使用绝对路径。

的header.php

<? 
 $base_url = "http://example.com";
?>
    <html>
      <head> 
       <title> <? echo($title); ?> </title>

        <link rel="stylesheet" type="text/css" href="<? echo($base_url); ?>/styles/some_css_file.css" media="all"/>
        <link rel="stylesheet" type="text/css" href="<? echo($base_url); ?>styles/another_css_file.css" media="all"/>
        <link rel="stylesheet" type="text/css" href="<? echo($base_url); ?>styles/another_css_file.css" media="all"/>
        ...
        ...
        ...

        <script type="text/javascript" src="<? echo($base_url); ?>/scripts/jquery-1.7.2.min.js"></script>
        <script type="text/javascript" src="<? echo($base_url); ?>/scripts/some_jquery_plugin.js"></script>
        <script type="text/javascript" src="<? echo($base_url); ?>/scripts/another_jquery_plugin.js"></script>
        ...
        ...
        ...
      </head>

某些文件包含header.php

<? 
  $title = "some page title";
  include("header.php"); 
?>

      <body>
        PAGE CONTENTS
      </body>
    </html>

4 个答案:

答案 0 :(得分:1)

使用HTML基本代码定义网站的基础。

<base href="<?php echo $base_url; ?>" />
<link rel="style.css" />

答案 1 :(得分:1)

绝对路径是这里的方式。但是,如果您有很多要打印的链接,可以通过将路径存储在数组中并循环遍历数组来简化它。

$base = "http://www.example.com/"
$links = array( "styles/file1.css", "styles/file2.css", ... );

foreach ( $links as $link ) {
    echo '<link rel="stylesheet" href="' . $base . $link . '" type="text/css" media="all" />';
}

作为旁注,你所拥有的并不是很好的做法。尝试组合其中一些文件会更好,更有效,因为这会减少浏览器必须向服务器发出的HTTP请求数量。 http://developer.yahoo.com/performance/rules.html#num_http

答案 2 :(得分:1)

我在我的一个项目中遇到了同样的疑问,而且我已经按照下面的代码完成了。由于路径以“/”开头,因此将在根目录中找到该文件,在这种情况下,无需指定域,如果您要重写URL,它将使维护变得更容易并防止出现问题使用(mod_rewrite)。希望它也可以帮到你!

<html>
  <head> 
   <title> <? echo($title); ?> </title>

    <link rel="stylesheet" type="text/css" href="/styles/some_css_file.css" media="all"/>
    <link rel="stylesheet" type="text/css" href="/styles/another_css_file.css" media="all"/>
    <link rel="stylesheet" type="text/css" href="/styles/another_css_file.css" media="all"/>

    <script type="text/javascript" src="/scripts/jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="/scripts/some_jquery_plugin.js"></script>
    <script type="text/javascript" src="/scripts/another_jquery_plugin.js"></script>
  </head>
</html>

答案 3 :(得分:0)

这不是您问题的直接答案,但它可能会对您有所帮助。

如果你要包含那么多css和JS文件,你应该考虑使用Minify。 Minify将获取一堆css / js文件并将它们压缩/组合成一个文件,这将大大加快您网站的加载速度。

使用它也可以帮助您解决路径问题,因为您可以非常轻松地指定目录和组。

您可以在此处找到相关信息:Minify