如何让绝对路径同时在本地和远程服务器上工作?

How to let absolute path work on both local and remote servers?

我正在创建一个网站,必须在 本地服务器 上进行编辑,然后再上传到 远程服务器 。我在本地服务器上使用绝对路径,但是当我将它上传到远程服务器时,链接不再有效。看来我只能使用相对或绝对,不能同时使用。

我希望脚本在本地和远程服务器上都能运行。本地显然是用于编辑(有时我以前​​的互联网连接速度很慢,所以我必须使用本地主机)。和远程用于生产目的和客户端预览。

下面是我创建的函数:

PHP 脚本:

define("LOCALHOST", "/adamsProject");
define("REMOTE_SERVER", "http://adamsproject.ph");

function host(){
    if(!LOCALHOST){
        echo REMOTE_SERVER;
    }else{
        echo LOCALHOST;
    }
}

在 HTML 上执行:

<ul>

    <a href="index.php"><img src=" <?php echo host(); ?> /images/logoMain.png" id="logoMain" > </a>

    <li><a href=" <?php echo host(); ?> /index.php"> HOME </a></li><li>
    <a href="#" id="servicesWide"> SERVICES <i class="fa fa-chevron-down"></i></a></li><li>
    <a href=" <?php echo host(); ?> /underConstruction.php"> ABOUT US </a></li><li>
    <a href=" <?php echo host(); ?> /pages/contactUs.php"> CONTACT US </a></li><li>
    <a href="#" id="folioWide"> PORTFOLIO <i class="fa fa-chevron-down"></i> </a></li>

</ul>

正如 DeDee 所说,您可能想要删除 link 中的回声以及 'host(); ?>' 之后的空格,请参见下面的代码。另外,不需要 PHP 功能;您可以使用“$_SERVER['SERVER_NAME']”来获取当前的 Web 服务器名称。希望对您有所帮助。

if(!$_SERVER['SERVER_NAME']='localhost'){
$domain = '/adamsProject';
} else {
   $domain = 'http://www.adamsproject.ph';   
}
?>
<ul>
<a href="<?php echo $domain;?>/index.php"><img src="<?php echo $domain;?>/images/logoMain.png" id="logoMain" > </a>
<li><a href="<?php echo $domain;?>/index.php"> HOME </a></li><li>
<a href="#" id="servicesWide"> SERVICES <i class="fa fa-chevron-down"></i></a></li><li>
<a href="<?php echo $domain;?>/underConstruction.php"> ABOUT US </a></li><li>
<a href="<?php echo $domain;?>/pages/contactUs.php"> CONTACT US </a></li><li>
<a href="#" id="folioWide"> PORTFOLIO <i class="fa fa-chevron-down"></i></a></li>
</ul>

编辑 根据你的意见,如果你有一个子目录 'localhost' 那么当你在本地主机上时,你可能需要一个 if 语句来将你的 'adamsProject' 目录添加到你的域中。试试看。让我知道。

EDIT2 将远程服务器域替换为您的硬编码域。此外,已将 $domain 添加到主页 img link 和主页导航 link.

上的 index.php

尝试使用 $ _ SERVER [ ' SERVER_NAME ' ] 代替您的函数。它适用于本地服务器和远程服务器。您的代码应如下所示。

<ul>

<a href="index.php"><img src="<?php echo 'http://' . $_SERVER['SERVER_NAME'];?>/images/logoMain.png" id="logoMain" > </a>

<li><a href="<?php echo 'http://' . $_SERVER['SERVER_NAME'];?>/index.php"> HOME </a></li><li>
<a href="#" id="servicesWide"> SERVICES <i class="fa fa-chevron-down"></i></a></li><li>
<a href="<?php echo 'http://' . $_SERVER['SERVER_NAME'];?>/underConstruction.php"> ABOUT US </a></li><li>
<a href="<?php echo 'http://' . $_SERVER['SERVER_NAME'];?>/pages/contactUs.php"> CONTACT US </a></li><li>
<a href="#" id="folioWide"> PORTFOLIO <i class="fa fa-chevron-down"></i> </a></li></ul>

它将returnhttp://localhost/somethinghttp://yourwebsite.pl/something

在使用 <?php echo $_SERVER['SERVER_NAME'];?> 之前必须添加 http://。如果您不这样做,它无论如何都会将 is 视为相对路径,并且会使您的服务器名称加倍。在这种情况下,它被视为绝对路径。这是一个更容易理解的例子:

Relative path:
<a href="index.php"><img src="/images/logoMain.png" id="logoMain" > </a>
Still relative path(server name doubled)
<a href="<?php echo $_SERVER['SERVER_NAME'];?>/index.php"> HOME </a>
Absolute path (correct one):
<a href="<?php echo 'http://' . $_SERVER['SERVER_NAME'];?>/underConstruction.php"> ABOUT US </a>

*请记住 <?php echo $_SERVER['SERVER_NAME'];?>return 服务器名称最后没有 /

或者 只需使用相对 URL...所以,

<a href="/underConstruction.php"> ABOUT US </a>

在远程和本地的工作方式相同。呈现页面产生:

http://localhost/underConstruction.php

我在本地。