1

我需要获取一个现有网站并将其作为另一个现有网站的子目录。例如,我有 www.website1.com 和 www.website2.com,我需要将 website2 放在 website1 中,如下所示:www.website1.com/website2/。应该注意的是,我使用 IIS 来托管这些网站。

我实际上已经多次遇到这种情况,我想知道是否有一种编写链接的好方法,这样我就可以轻松地将网站放到任何地方,而不必重新格式化每个链接。我使用两个主要路径 - 一个用于我的根目录,一个用于根目录外的包含文件夹。我的第一个想法是在 PHP 中为这些路径设置两个路径变量,但后来它无法进入我的外部 js 和 css 文件。如果我可以帮助它,我不想将它们转换为 php 文件,因为它会产生缓存复杂性。

无论如何,还有其他人对此有很好的解决方案吗?你过去是如何处理的?

4

1 回答 1

0

这就是我最终做的事情:

对于我的根目录下的项目,我使用了纯相对路径。因此,例如,当我访问图像文件夹中的图像时,链接取决于我在目录结构中所在页面的深度:

<img src='./images/myImg.png'/> <!-- in root dir -->
<img src='../images/myImg.png'/> <!-- 2 levels deep -->
<img src='../../images/myImg.png'/> <!-- 3 levels deep -->

这并不理想,因为我必须考虑每个链接与我所在的文件的关系,如果我更改图像文件夹或文件的位置,我需要更改每个链接。积极的一面是,只要我不开始更改我的目录结构,我就可以将此文件夹放置在任何级别,并且无需更改即可工作。例如,我可以这样做:

www.website2.com
www.website1.com/website2/
www.website1.com/sub-directory/website2/

它可以在不对链接进行任何更改的情况下工作。

对于根文件夹之外的包含文件夹中的项目,我必须做一些不同的事情。对于那些,我在 PHP 中使用了相对链接,我在这里了解了更多信息http://yagudaev.com/posts/resolving-php-relative-path-problem/。他描述了几个不同的选项,但最后,我创建了一个全局变量,如下所示:

$includesPath = $_SERVER['DOCUMENT_ROOT'] . "/../myProductsIncludes/";

这将在与根文件夹相同的文件夹中查找包含文件夹。如果我需要调整包含文件夹的位置,我只需更改这个变量中的链接。然后,每当我将 url 写入包含文件夹中的文件时,我都会在全局变量前面添加,如下所示:

include $includesPath . "classes/myClass.php";

这都是相当基本的东西,并且有一些缺点,所以我不会在每个项目中都使用它,但是如果我有一个我不知道它会在目录结构中结束的项目(例如,如果我为客户签约)。因此,例如,如果我将其提供给客户,他可以将我的根文件夹的内容放到他网站上的任何子目录中,并将包含文件夹放在与他网站的根目录相同的文件夹中(或者只是更改那个变量,如果他想将它存储在其他地方),并且无需更改链接即可全部工作。

如果有人有不同的方式来做到这一点,或者对我的方式有任何改进,我很想听听。

于 2012-12-18T19:47:02.047 回答