这是一个结构示例:
/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)
这将适用于您的任何文件.
而不是使用相对路径:
href="css/style.css"
Run Code Online (Sandbox Code Playgroud)
使用来自webroot的绝对路径:
href="/css/style.css"
Run Code Online (Sandbox Code Playgroud)