php包含来自另一个目录的文件

col*_*kin 6 php include

这是一个结构示例:

/main
 /css
  style.css
 /include
  article1.php
  article2.php
 header.php
 index.php
Run Code Online (Sandbox Code Playgroud)

在我的header.php中,我有以下css代码:

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

并且,例如,在我的index.php中,我将以下内容作为第一行:

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

现在,一切都很好.接下来,我将在article1.php文件中插入以下代码:

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

内容(菜单和其他html)正确显示,但CSS根本不会显示/识别.基本上发生的事情是包含头文件但服务器不尊重目录父项.为了正确显示CSS,我必须link rel将CSS 更改为../css/style.css,但如果我这样做,则无法对位于主目录中的文件进行操作.

我希望我能清楚地解决问题.我究竟做错了什么?如何包含来自不同目录的文件并保留其中的链接?

小智 20

在您网站的<head>部分中,插入包含该属性<base>元素href.将该href属性设置为您网站的基本URL,所有相关请求都将通过该基本URL发送.

<base href="http://my-website-url.com/" />
<link rel="stylesheet" type="text/css" href="css/style.css" />
Run Code Online (Sandbox Code Playgroud)

使用正确设置的base标记,用户的浏览器将尝试从URL加载样式表http://my-website-url.com/css/style.css.

注意:这不仅会影响样式表,还会影响文档中的所有相对链接.


mik*_*ans 13

它与路径的工作方式有关.我建议尽可能从doc root中获取路径.

<?php include( $_SERVER['DOCUMENT_ROOT'] . '/header.php' ); ?>
Run Code Online (Sandbox Code Playgroud)

这将适用于您的任何文件.


bub*_*bba 5

而不是使用相对路径:

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

使用来自webroot的绝对路径:

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