我正在创建一个必须在本地服务器上进行编辑的网站,然后稍后在远程服务器上进行上传。我在本地服务器上使用绝对路径,但是当我将其上传到远程服务器时,链接不再起作用。似乎我只能使用相对或绝对,而不是两者。
我希望脚本既适用于本地服务器,也适用于远程服务器。本地显然是编辑(有时我曾经有慢速的互联网连接所以我必须使用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>
答案 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/something
或http://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
对我来说当地人。