1

我是 PHP 新手,尝试使用 include 链接我的 CSS 文件时遇到问题。

基本上,无论文件有多远,我都需要我的文件链接回某个目录。我试过使用

<?php
    include $_SERVER['DOCUMENT_ROOT'] . '/sysprogs/required/header.html'; 
?>

但是 header.html 包含指向我的 css 文件的链接,因此它最终在其中查找 css 文件的目录是

http://localhost/SysProgs/software/CSS/style.css

而不是我想要它去的地方

http://localhost/SysProgs/required/CSS/style.css

我希望这是有道理的,我希望你能帮助我

谢谢大家的帮助!

4

5 回答 5

7

我绝对不会使用<base>. 我以前遇到过很多问题。如果您使用<base>,您的所有链接都将相对于该基本值。

相反,我建议为公共目录设置 PHP 常量。例如:

PHP代码:

<?php
    define('CSS_DIR', '/SysProgs/required/CSS/');
?>

HTML 代码:

<link href="<?php echo CSS_DIR ?>style.css" rel="stylesheet" type="text/css" />
于 2010-05-04T18:43:56.627 回答
3

一个想法

使用 中的完整 URL header.html。这将是明确和稳健的。

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

另一个想法

使用<base>标题标签。这允许您为链接指定一个基本 URL,包括 CSS,并且在短期内可能需要最少的工作(见下面的注释)。

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

更多在w3schools

注意:正如下面评论中所指出的,base最终可能会导致更多的混乱,而不是值得。

于 2010-05-04T18:05:54.463 回答
2

我喜欢在应用程序的中心位置同时定义绝对路径和 webroot:

<?php

  define("APP_WEBROOT", "/myapp"); 
  define("APP_ROOTDIR", "/home/www/example.com/htdocs/myapp");

 ?>

然后,您可以像这样“绝对化”正确的链接:

<?php echo APP_WEBROOT; ?>/software/CSS/style.css

我更喜欢这个

  • 结束,<base>因为从长远来看,该标签会造成混乱并使代码更难维护

  • 过度使用绝对路径/software/CSS/style.css,因为它们使您无法将应用程序安装在您选择的子目录中:您将始终绑定到根目录。

于 2010-05-04T18:30:06.090 回答
0

我在设计网站时经常遇到这个问题。当我有自定义 CMS 时,我使用以下内容:

$basedir = "root_directory/";
$basedirPHP = $_SERVER['DOCUMENT_ROOT'].$basedir;
$basedirHTML = "http://".$_SERVER['SERVER_NAME'].$basedir;

我定义了 $basedir,因此我可以毫不费力地将站点移动到服务器中的不同子目录。$basedirPHP 和 $basedirHTML 是这样我可以在链接 CSS、JS 等时使用 php 或像你提到的那样调用文件。

如果你在 wordpress 上,只需使用好 ol'bloginfo('template_directory');在模板文件中做同样的事情。

于 2010-05-04T21:31:02.417 回答
-2

您首先要了解的是,您的问题与 PHP 无关。它就像您的 HTML 问题中的文件名一样简单。如果没有 PHP,它将保持不变。只需使用 CSS 文件的绝对路径

还有一件事要考虑:考虑接受一些问题。

于 2010-05-04T18:26:38.647 回答