Как обеспечить работу абсолютного пути как на локальном, так и на удаленном сервере?

Я создаю сайт, который должен быть отредактирован на локальный сервер а затем загрузил позже удаленный сервер. Я использую абсолютный путь на локальном сервере, но затем, когда я загружаю его на удаленный сервер, ссылки больше не работают. Кажется, я могу использовать только относительный или абсолютный, а не оба.

Я хочу, чтобы скрипт работал как на локальном, так и на удаленном сервере. Очевидно, что Local предназначен для редактирования (иногда у меня было медленное интернет-соединение, поэтому мне приходилось использовать localhost). И Remote для производственных целей и предварительного просмотра клиента.

Ниже приведена функция, которую я создал:

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

Решение

Как сказал DeDee, вы, вероятно, хотите удалить эхо в ссылке, а также пробелы сразу после ‘host (); ?> ‘Смотрите код ниже. Кроме того, нет необходимости в функции PHP; Вы можете использовать «$ _SERVER [‘SERVER_NAME’]», которая захватывает текущее имя веб-сервера. Надеюсь, это поможет.

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 на ваш index.php по домашней ссылке img и HOME nav link.

1

Другие решения

альтернативно просто используйте относительные URL … так что

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

Будет работать одинаково на удаленных и локальных. Рендеринг страницы производит:

Http: //localhost/underConstruction.php

для меня на местном.

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'];?>вернуть имя сервера без / в конце.

1