我已经查看了一些关于我遇到的同样问题的不同问题。我已经采取了解决方案并将其改编为我自己的项目。
这是我的目录结构。
/css
-style.css
/includes
-shop.css
-header.php
-footer.php
/php
/js
/shop
-index.php
-index.php <-- homepage
-config.php
在我的config.php里面我有
define('ROOT_PATH',$_SERVER['DOCUMENT_ROOT']);
我的header.php
<?php include './config.php';?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<?php echo '<link href="'.ROOT_PATH.'/css/style.css" rel="stylesheet">';?>
<?php if ($_SERVER['REQUEST_URI'] == '/shop/'){echo '<link href="'.ROOT_PATH.'/includes/shop.css" rel="stylesheet">';} ?>
</head>
唯一的问题是,对于除root index.php文件之外的任何其他页面,config.php文件的路径将变得不正确。因此,CSS路径变得不正确,因为ROOT_PATH
未在任何地方定义。
使用包含时处理路径的最佳方法是什么?
答案 0 :(得分:1)
使用$_SERVER['HTTP_HOST']
。$ _ SERVER ['DOCUMENT_ROOT']获取例如var/com/images
的文档根目录。 $_SERVER['HTTP_HOST']
会获得http://example.com/images
之类的当前网址.TYour代码应如下所示
define('ROOT_PATH',$_SERVER['HTTP_HOST']);
并包括这种方式
<?php include'../config.php';
希望这有助于你
答案 1 :(得分:1)
可能在其他index.php文件中使用include的相对路径。
<?php include '../config.php'; ?>
答案 2 :(得分:1)
您正在使用服务器的实际文件系统路径来引用样式表。这就像尝试做类似的事情:
<link href="C:\your_website_path/includes/shop.css"...
并且不会工作。
我建议将其更改为:
define('ROOT_PATH', 'http://www.your-website-url.com/');
此致
答案 3 :(得分:0)
你需要做的是让你的配置包括绝对,而不是相对。你用点./config
开始路径,这意味着它的相对。而是设置您的标题以包含配置文件,其中包含像这样的绝对路径
<?php include '/home/user/config.php';?>
这样,任何页面都可以找到该文件,无论它在目录结构中的位置如何。