我有一个包含.css文件链接的header.php文件。如何使用包含文件的相对路径,如.css
当我将header.php包含到不同文件夹中的另一个php文件中时,header.php中的.css文件href在新的php文件中不正确。
我应该如何解析.css href,所以我可以将header.php包含在任何文件夹中?
我有一个包含.css文件链接的header.php文件。如何使用包含文件的相对路径,如.css
当我将header.php包含到不同文件夹中的另一个php文件中时,header.php中的.css文件href在新的php文件中不正确。
我应该如何解析.css href,所以我可以将header.php包含在任何文件夹中?
像这样:
<link rel="stylesheet" href="/css/style.css" />
第一/
说“去根目录下,并从那里看。”这是一条相对路径。
写CSS文件,如绝对路径:
<link href="http://site.com/css/style.css" />
这是一个原因,许多大型应用程序会尝试安装时设置了“根URI”常数/变量。
而如果您的应用程序位于域/子域的根目录/css/style.css
会的工作,它会如果不是(/appName/css/style.css
)
商店的绝对URI的“根”脚本文件夹一起失败与其他配置常量/变量,并建立绝对联系变得轻而易举。
define('SCRIPT_ROOT', 'http://localhost/yourApplication');
// ...
echo '<link rel="stylesheet" type="text/css" href="'.SCRIPT_ROOT.'/css/style.css">';
如果我将绝对URI存储到config.php,那么I需要包含config.php到header.php。正如我所说的header.php和新的php不在同一个文件夹中,新的php文件现在无法找到config.php而不是.css文件。这并不会让事情变得更简单。 –
如果你的代码在任何给定的目录结构中都不知道“它在哪里”,我不确定我能帮你。你不能将相对位置硬编码到配置文件吗? – discomatt
你有几个选项,我已经试图在这里集会
基本href
<head>
<base href="http://www.mysite.com/" />
</head>
它做什么,是将所有的HREF指向特定的路径。 有了这一套,你可以使用<link rel='stylesheet' href='css/mycss.css' />
,并成功加载mycss.css文件,即使你是网页是骨子里http://www.mysite.com/pages/2012/public/secret_folder/myownphpfile.php
绝对路径
您可以随时使用aboslute路径,如,但它以后可能会更改文件的文件夹。
<link rel='stylesheet' href='http://www.mysite.com/css/mycss.css' />
定义拍
由于@Discomatt说,使用PHP定义的路径是一个简单的方法来让事情工作。下行;你必须使用PHP。如果你反正使用它,没有问题^^
define('CSSDIR', 'http://www.mysite.com/css/);
<link rel='stylesheet' href='<?= CSSDIR ?>mycss.css' />
我可以看到一个原因,希望有动态和相对路径生成的HREF链接,那就是如果你在具有多个域或站点运行项目不同的路径。 (例如,您的项目可在http://myproject.example.org/和http://example.org/myprojecttest/上找到)。如果不是这种情况,我会直接建议,指定你的CSS包括相对于根文件夹:
<link href="/css/style.css" />
如果这是否适用于你,试试这个:
在每一个顶级文档需要header.php,添加一个$ ROOT变量,该变量指示顶层文档的位置与根目录的位置。例如:
$ROOT = './';
或
$ROOT = '../';
或
$ROOT = '../../';
现在,在你的header.php文件,你可以使用:
<link href="<?php echo $ROOT; ?>css/style.css" />
这使您可以一个header.php文件,可用于任何相对路径的任何页面。
全部实施例
包含的文件(/path/header.php)
<html><body>
<head>
<link href="<?php echo $ROOT; ?>css/style.css" />
[...]
文件1(/path/index.php):
<?php
$ROOT = './';
include 'header.php';
?>
文件1( /path/admin/index.php):
<?php
$ROOT = '../';
include '../header.php';
?>
文件3(/path/admin/test/magic.php):
<?php
$ROOT = '../../';
include '../../header.php';
?>
基于Tom's answer我做的base url
组合和PHP define
(少打字)。
某处在PHP:
define("HOST_BASE", "http://example.com/");
然后在头文件:
<base href="<?php echo HOST_BASE ?>">
的基础标签是新的给我,我很担心兼容性,但它似乎很好地工作。有more info about it at MDN。
为什么不使用相对于您的域的路径,比如'/ styles/your.css' –
在header.php文件中使用CSS的完整链接 – Adsy2010