我有一个在生产服务器上运行的代码的副本,我使用运行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
放在网站上的每个链接之前。
答案 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