如何让绝对路径同时在本地和远程服务器上工作?
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/something
或http://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
我在本地。
我正在创建一个网站,必须在 本地服务器 上进行编辑,然后再上传到 远程服务器 。我在本地服务器上使用绝对路径,但是当我将它上传到远程服务器时,链接不再有效。看来我只能使用相对或绝对,不能同时使用。
我希望脚本在本地和远程服务器上都能运行。本地显然是用于编辑(有时我以前的互联网连接速度很慢,所以我必须使用本地主机)。和远程用于生产目的和客户端预览。
下面是我创建的函数:
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.
尝试使用 $ _ 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/something
或http://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
我在本地。