格式化链接以轻松更改网站位置(例如在其他网站的子目录中)

时间:2012-12-14 02:45:01

标签: php javascript css url iis

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

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

无论如何,其他人是否有一个很好的解决方案呢?你过去怎么处理它?<​​/ p>

1 个答案:

答案 0 :(得分: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/

它的工作原理没有对链接进行任何更改。

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

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

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

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

这都是相当基本的东西,并且有一些缺点所以我不会将它用于每个项目,但是如果我有一个项目我不知道它最终会在目录结构中的哪个项目(例如,如果我正在签约客户)。例如,如果我将它提供给客户端,他可以将我的根文件夹的内容放到他网站上的任何子目录中,并将includes文件夹放在与其网站根目录相同的文件夹中(或者只是更改一个变量,如果他想将它存储在其他地方),这一切都可以在不改变链接的情况下工作。

如果有人采用不同的方式做到这一点,或者改进了我的方式,我很乐意听到。