如何让绝对路径在本地和远程服务器上运行?

时间:2015-08-11 17:01:55

标签: php html localhost absolute relative

我正在创建一个必须在本地服务器上进行编辑的网站,然后稍后在远程服务器上进行上传。我在本地服务器上使用绝对路径,但是当我将其上传到远程服务器时,链接不再起作用。似乎我只能使用相对或绝对,而不是两者。

我希望脚本既适用于本地服务器,也适用于远程服务器。本地显然是编辑(有时我曾经有慢速的互联网连接所以我必须使用localhost)。和远程用于生产目的和客户端预览。

以下是我创建的功能:

PHP SCRIPT:  

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>

3 个答案:

答案 0 :(得分:1)

就像DeDee说的那样,你可能想要删除链接中的回声以及'host()之后的空格; ?&GT;”请参阅下面的代码。此外,不需要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 用您的硬编码域替换远程服务器域。另外,在home img link和HOME nav link上为你的index.php添加了$domain

答案 1 :(得分:1)

尝试使用$ _ 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>

它将返回http://localhost/somethinghttp://yourwebsite.pl/something

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

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'];?>最终会返回没有/的服务器名称。

答案 2 :(得分:1)

或者只使用相对网址...所以,

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

在远程和本地都可以正常工作。渲染页面会产生:

http://localhost/underConstruction.php

对我来说当地人。