我已经看了几个不同的问题,关于我所遇到的同样的问题。我已经采用了一个解决方案,并将其应用到我自己的项目中。
这是我的目录结构。
/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>
唯一的问题是,对于根index.php文件以外的任何其他页面,config.php文件的路径将变得不正确。这样,CSS路径就会变得不正确,因为ROOT_PATH
没有在任何地方定义。
当使用include时,处理路径的最佳方式是什么?
Use $_SERVER['HTTP_HOST']
.$_SERVER['DOCUMENT_ROOT']获取var/com/images
的文档根目录。$_SERVER['HTTP_HOST']
将获得当前url,如http://example.com/images
. t,您的代码应该如下所示
define('ROOT_PATH',$_SERVER['HTTP_HOST']);
并以这种方式包含
<?php include'../config.php';
希望这对你有帮助
可能在其他index.php文件中使用相对路径。
<?php include '../config.php'; ?>
您正在使用服务器的实际文件系统路径来引用样式表。这就像尝试做这样的事情:
<link href="C:your_website_path/includes/shop.css"...
和不工作
我建议把它改成:
define('ROOT_PATH', 'http://www.your-website-url.com/');
认为,
你需要做的是使你的配置包含绝对的,而不是相对的。路径以点./config
开始,这意味着它是相对的。相反,将头文件设置为包含配置文件的绝对路径,如
<?php include '/home/user/config.php';?>
这样,无论文件在目录结构中的位置如何,任何页面都可以找到该文件。