开发服务器和生产服务器上的一个代码 - 如何处理链接?

时间:2010-06-01 16:00:01

标签: php path

我有一个在生产服务器上运行的代码的副本,我使用运行xampp的本地计算机作为开发服务器。我有几个我积极开发的网站,所以我被迫使用http://localhost/sitename

我的所有网址都与域相关,(/ file.php)。它们在prod服务器上工作正常,但是在本地服务器上,当我想让它们相对于它们所在的站点文件夹工作时,它们都指向localhost。除了我现在做的事情,我还有什么可以做的,这就是:

if($_SERVER['SERVER_NAME'] == "localhost") {
 $path_to = "http://" . $_SERVER['SERVER_NAME'] . "/folder";
 $path_to_files = $_SERVER['DOCUMENT_ROOT'] . "/folder";
} else {
 $path_to = "http://" . $_SERVER['SERVER_NAME'];
 $path_to_files = $_SERVER['DOCUMENT_ROOT'];
}

并简单地将$path_to放在网站上的每个链接之前。

6 个答案:

答案 0 :(得分:5)

您应该使用虚拟主机。

因此,在您的主机文件中,添加如下内容:

sitename.dev 127.0.0.1

然后在xampp/apache/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>
        DocumentRoot "/xampp/htdocs/sitename"
        ServerName sitename.dev
</VirtualHost>

重新启动Apache,然后浏览到http://sitename.dev

这应该提供与生产相同的行为。

详细了解vhosts here

答案 1 :(得分:1)

只是不能使用链接图像/文件链接中的主机名。

http来自root domain / folder / file.jpg =&gt; /folder/file.jpg - 它不需要http://domain

和脚本方面,您可以参考./或使用 FILE 或类似的函数/常量获取当前路径:

调查:

basename(dirname(__FILE__));

答案 2 :(得分:1)

为什么不使用相对链接:

<a href='/some/relative/path'>

然后将文件名映射到URL并返回,使用相关的$ _SERVER变量? (为简单起见,您不希望与每个网站关联的目录树太多。

或者只需在需要提供主机名的地方使用$ _SERVER ['HTTP_HOST']?

下进行。

答案 3 :(得分:0)

为什么不在xampp开发中为不同的客户使用虚拟域?

答案 4 :(得分:0)

您提供的解决方案很好,但如果您想要对绝对URL进行硬编码,则可以为每个站点配置一个虚拟主机的dev apache。

请参阅Apache Virtual Host documentation

您可以让Apache侦听多个端口,并为每个站点分配一个端口。

您可以让Apache监听所有IP,并为每个站点使用不同的IP。

或者您可以编辑创建多个解析为127.0.0.1的主机名并配置基于名称的虚拟主机。您可以使用真实的DNS服务器或编辑您的主机文件,如Matt。

所示

答案 5 :(得分:0)

您要做的是在Apache中使用虚拟主机。在httpd.conf中使用它:

NameVirtualHost 127.0.0.1

<VirtualHost localhost>
DocumentRoot "C:/My Documents/My Webs"
ServerName localhost
</VirtualHost>

<VirtualHost sitename>
DocumentRoot "C:/My Documents/My Webs/Site Name"
ServerName sitename
</VirtualHost>

然后在您的主机文件(Windows上的C:\Windows\System32\Drivers\etc\hosts)中添加服务器名称:

127.0.0.1        localhost sitename