繁体   English   中英

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

[英]Alternatives to using absolute paths in included php files

我有一个名为“header.php”的文件,我在我的网站上的每个页面都包含这个文件,这个文件包含我的服务器上的其他文件的链接,如css文件,jquery插件等等。现在我使用绝对路径这些链接,所以他们将使用与header.php文件不在同一目录中的文件,这是有效的,但正如您在下面的示例中所看到的,如果您的header.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>

使用HTML基本标记定义站点的基础。

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

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

$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

我在我的一个项目中遇到了同样的疑问,而且我已经按照下面的代码完成了。 由于路径以“/”开头,因此将在根目录中找到该文件,在这种情况下,无需指定域,如果您要重写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>

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

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

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

您可以在此处找到有关它的信息: Minify

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM