如何使用包含文件(如.css)的相对路径

zha*_*ing 7 css php header path

我有一个header.php文件,其中包含.css文件链接.

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

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

小智 16

这是许多大型应用程序在安装时尝试设置"根URI"常量/变量的原因.

/css/style.css如果您的应用程序位于域/子域的根目录下将工作,它会如果它是不会失败(/appName/css/style.css)

将绝对URI与其他配置常量/变量一起存储到"root"脚本文件夹,构建绝对链接变得轻而易举.

define( 'SCRIPT_ROOT', 'http://localhost/yourApplication' );
// ...
echo '<link rel="stylesheet" type="text/css" href="'.SCRIPT_ROOT.'/css/style.css">';
Run Code Online (Sandbox Code Playgroud)


Tom*_*Tom 8

你有几个选择,我试图在这里收集

基础href

<head>
<base href="http://www.mysite.com/" />
</head>
Run Code Online (Sandbox Code Playgroud)

它的作用是将所有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' />
Run Code Online (Sandbox Code Playgroud)

定义了拍子

正如@Discomatt所说,使用PHP定义的路径是一种简单的方法来保持工作.下行; 你必须使用PHP.如果你反正使用它,没有问题^^

define('CSSDIR', 'http://www.mysite.com/css/);
<link rel='stylesheet' href='<?= CSSDIR ?>mycss.css' />
Run Code Online (Sandbox Code Playgroud)


小智 6

我可以看到想要为href链接生成动态和相对路径的一个原因,那就是在多个域或具有不同路径的站点上运行项目.(例如,您的项目可以在http://myproject.example.org/上找到,也可以在http://example.org/myprojecttest/上找到).如果不是这种情况,我建议直接指定你的css包括相对于根文件夹:

<link href="/css/style.css" />
Run Code Online (Sandbox Code Playgroud)

如果这适用于您,请尝试以下操作:

在每个需要header.php的顶级文档中,添加一个$ ROOT变量,该变量指示顶级文档与根位置的位置.例如:

$ROOT = './';
Run Code Online (Sandbox Code Playgroud)

要么

$ROOT = '../';
Run Code Online (Sandbox Code Playgroud)

要么

$ROOT = '../../';
Run Code Online (Sandbox Code Playgroud)

现在,在header.php文件中,您可以使用:

<link href="<?php echo $ROOT; ?>css/style.css" />
Run Code Online (Sandbox Code Playgroud)

这允许您创建一个header.php文件,该文件适用于任何相对路径的任何页面.

完整的例子

包含的文件(/path/header.php)

<html><body>
<head>
    <link href="<?php echo $ROOT; ?>css/style.css" />
[...]
Run Code Online (Sandbox Code Playgroud)

文件1(/path/index.php):

<?php
$ROOT = './';
include 'header.php';
?>    
Run Code Online (Sandbox Code Playgroud)

文件1(/path/admin/index.php):

<?php
$ROOT = '../';
include '../header.php';
?>    
Run Code Online (Sandbox Code Playgroud)

文件3(/path/admin/test/magic.php):

<?php
$ROOT = '../../';
include '../../header.php';
?>    
Run Code Online (Sandbox Code Playgroud)


Pau*_*ert 0

像这样:

<link rel="stylesheet" href="/css/style.css" />
Run Code Online (Sandbox Code Playgroud)

第一个/说“转到根目录并从那里查看”。这是一个相对路径。