Я разрабатываю сайт для своей работы в школе. Я использую XAMPP v3.2.1. на локальный сайт.
Моя папка сайта настроена так же, как в папке htdocs
:
Моя проблема начинается здесь: на index.php
я в том числе includes.php
, что простой файл с определением() для папок моего сайта, поэтому я могу напечатать постоянен на HTML - тегах сайта, как URL (так же, как ниже)
//includes.php
<?php
define("css", "localhost/ibnm/css");
?>
//index.php
<?php
include_once("includes.php");
?>
<link href="<?= css; ?>/bootstrap.css" rel="stylesheet">
Но когда я это делаю, CSS не работает. Когда я вижу тег <a>
с ранее определенным URL на странице, он выглядит так:
localhost/ibnm/site/localhost/ibnm/css
вместо
локальный /ibnm/CSS
Это confunsing, потому что если тег <a>
не имеет никакого значения (href=""
), он выдает localhost/ibnm/site/.
Что может быть неправильным? XAMPP или кодирование?
Это связано с тем, что браузер считает, что локальный хост - это папка, а затем сделать это на текущем пути, чтобы исправить это просто добавить http://
перед локальным хостом
define("css", "http://localhost/ibnm/css");
Любой URL-адрес не начинается с http, тогда браузер будет считать, что его относительный путь будет добавлен к вашему текущему пути, вот почему вы получаете localhost/ibnm/site/localhost/ibnm/css. И одна небольшая коррекция в вашем коде, ее не очень хорошая идея, чтобы жестко кодировать имя сервера в коде, лучше получить имя сервера динамически. Так что вам не нужно менять при развертывании вашего сайта на реальном сервере.
//includes.php
<?php
define("css", $host='http://'.$_SERVER['SERVER_NAME'].'/ibnm/css');
?>
Вместо использования абсолютного пути вы можете просто добавить одну косую черту перед контуром CSS -
<link href="/<?= css; ?>/bootstrap.css" rel="stylesheet">