2

我有一个我在内部 WAMP 服务器上开发的站点,并且托管在异地(大概在 Apache 服务器上)。该站点是在 WAMP 服务器的根目录 (C:\wamp\www) 中创建的。我现在正试图将内部开发站点移动到 Windows Home Server v1 机器上(本质上是运行 IIS 6 的 Server 2003 机器)。我试图没有两个不同版本的站点:一个用于内部(在 IIS 上),一个用于托管异地(在 Apache 上)。

在 WHS 机器上,我有一个虚拟目录<sitename>位于:

c:/inetpub/<sitename>

我可以在服务器上访问它:

Localhost/<sitename>

并从 LAN 上的任何地方:

<ServerName>/<sitename>

当我最初编写该站点时,我对几乎每个文件、路径、目录和 PHP 包含文件都使用了 ../ 声明。这在 WAMP 服务器和异地主机上运行良好。但是,当我将站点移动到虚拟目录<sitename>时,它在 IIS 服务器上失败了。

所有此类 ../ 引用都指向服务器根目录:

<ServerName>/

而不是网站主页:

<ServerName>/<sitename>

据推测,我可以将站点移动到“根”目录:c:/inetpub/wwwroot,但 Windows Home Server 将其用于其他目的。

我可以将每个引用从 ../ 更改为../<sitename>/,但这意味着要维护 2 个不同的站点,一个用于内部,一个用于异地。

所以,我的问题是......

  1. 有没有办法声明虚拟目录c:/inetpub/<sitename> 是这个单一站点的主目录或根目录?IIS 中是否有一个配置可以为这个虚拟目录执行此操作,并且不会扰乱此服务器上托管的其他站点?

如果不;

  1. 有人可以指出我重写网站的其他方式,以便让它在 Apache 和 IIS 6 上运行,而对两个不同的服务器没有/最小的改动?

我一直在寻找一个多星期的时间。我发现的所有解决方案都特定于 Apache 或 IIS,但在两者中都不起作用。

谢谢!

4

1 回答 1

0

好的,这是一个-可能的-答案...

我将 every 更改../为 PHP 包含语句,调用我命名为SiteBase.txt.

在 IIS 服务器上,SiteBase.txt 包含一行:http://<ServerName>/<sitename>/.

在 WAMP 服务器上,SiteBase.txt 包含一行:../

这样,当我将站点从我的开发服务器移动到生产服务器时,我只需要更改这个文件。有点蛮力,但它似乎正在工作。

有没有人看到这个问题?

谢谢!

于 2012-10-19T03:06:28.590 回答