0

我有图像目录 mysite/2012/5/15/image.jpg,我的页眉和页脚位于 mysite/。然后我从数据库中获取 image.jpg 并与用户提交的标题和评论(如果有)一起显示在另一个页面中。在 header.php 和 footer.php 中,我指向一个 css 文件,该文件也位于 mysite/ 目录中。我的问题是:从我的图像目录访问页眉和页脚的最佳方法是什么?我这样做的方式如下:

include('../../../header.php');
include('../../../footer.php');

但是在我这样做并尝试显示页面之后,css文件不会加载,因为它不存在于图像目录中。为了解决这个问题,我在页眉和页脚中放了一堆 if 语句:

       if(!strcmp($thisPage,"images")) {
          echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../file.css\" media=\"screen,projection\" />";
          echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../../file2.css\" media=\"print\" />;";
       }
       else
       {
          echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"file.css\" media=\"screen,projection\" />";
          echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"file2.css\" media=\"print\" />";
       }

有没有更好的方法来做到这一点?

提前致谢!

4

2 回答 2

0

您可以使用常量,也可以简单地使用:

echo $_SERVER["HTTP_HOST"]; //outputs www.example.com

它为您提供网站的域。

echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"http://". $_SERVER["HTTP_HOST"] ."/css/file.css\" media=\"screen,projection\" />";

但是,当您链接到无法使用文件系统位置的样式表时,Travesty3 的一个正确方法是,您需要为 CSS 文件使用 URL。

define("CSS_PATH", "http://mysite.com/css");

通常,当我启动一个站点时,我做的第一件事就是设置常量,如下所示:

define('ROOT_DIR',$_SERVER['DOCUMENT_ROOT']);
define('SITE_URL','http://www.example.com/');
define('JS_DIR',SITE_URL . 'js/');
define('CSS_DIR',SITE_URL . 'css/');
于 2012-05-17T19:02:13.173 回答
0

我建议您使用绝对路径而不是相对路径。

如果您担心您可能想要更改目录结构并且不想替换所有绝对路径的巨大麻烦,那么您可以将绝对路径存储在 PHP 变量或常量,甚至 Apache 服务器变量中,所以如果您的目录结构发生变化,您只需更新一个变量:

define("CSS_PATH", "http://mysite.com/css");

echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"". CSS_PATH ."/file.css\" media=\"screen,projection\" />";

// OR

// add `SetEnv CSS_PATH "http://mysite.com/css"` to your Apache config file or envvars file

echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"{$_SERVER["CSS_PATH"]}/file.css\" media=\"screen,projection\" />";
于 2012-05-17T18:36:11.013 回答