PHP/IIS相对包含混淆


PHP/IIS relative includes confusion

我想知道这种设置是否可行,因为我在设置时遇到了很多麻烦。我试图建立一个网站的文件结构如下:

  • project1 (文件夹)
    • index . php
    • style.css
    • include.php
      • 管理(文件夹)
        • index . php

父文件夹"project1"位于D:'Projects'project1的'server1' .

通过虚拟目录"http://server1/project1"访问该网站。

我想能够写所有的路径包括,图像src,样式表等,在格式'/style.css',这样的文件可以找到,无论他们在哪里需要。例如,下面的链接应该工作,无论它被放置在'project1'文件夹或'admin'文件夹:

<link rel="stylesheet" type="text/css" href="/style.css">

EDIT:作为mellamokb建议的,使用href="/project1/style.css"似乎可以从'index.php'文件中工作。然而,我似乎找不到一个类似的解决方案为PHP INCLUDE。

<?php include_once '/include.php'; ?>

…在这两个index.php文件中,admin目录中的一个无法找到该文件。

我期望$_SERVER['DOCUMENT_ROOT']返回"D:'Projects'project1",但它返回D:'staging,我不知道为什么。我尝试了几种不同的方法来设置项目的"根",但我只是结束了更困惑自己!项目的虚拟根应该是'http://server1/project1',物理根应该是D:'Projects'project1,但我不知道如何强制执行。

您可以创建一个包含常量的文件,并拥有诸如define('BASE_URL', "http://server1/project1/")之类的内容。然后,您可以使用恒定变量BASE_URL相对工作,因此,

<link rel="stylesheet" type="text/css" href="<?php echo BASE_URL; ?>style.css">

你也可以通过附加"相对"地址来处理其他文件。

include (BASE_URL . '<file you want to add>');