2012-09-14 91 views
5

我有一个包含.css文件链接的header.php文件。如何使用包含文件的相对路径,如.css

当我将header.php包含到不同文件夹中的另一个php文件中时,header.php中的.css文件href在新的php文件中不正确。

我应该如何解析.css href,所以我可以将header.php包含在任何文件夹中?

+0

为什么不使用相对于您的域的路径,比如'/ styles/your.css' –

+1

在header.php文件中使用CSS的完整链接 – Adsy2010

回答

1

像这样:

<link rel="stylesheet" href="/css/style.css" /> 

第一/说“去根目录下,并从那里看。”这是一条相对路径。

0

写CSS文件,如绝对路径:

<link href="http://site.com/css/style.css" />

13

这是一个原因,许多大型应用程序会尝试安装时设置了“根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">'; 
+0

如果我将绝对URI存储到config.php,那么I需要包含config.php到header.php。正如我所说的header.php和新的php不在同一个文件夹中,新的php文件现在无法找到config.php而不是.css文件。这并不会让事情变得更简单。 –

+0

如果你的代码在任何给定的目录结构中都不知道“它在哪里”,我不确定我能帮你。你不能将相对位置硬编码到配置文件吗? – discomatt

7

你有几个选项,我已经试图在这里集会

基本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' /> 
4

我可以看到一个原因,希望有动态和相对路径生成的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'; 
?>  
0

基于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

相关问题