Ссылки из require_once не работают

У меня есть файл меню, который я хочу включить в каждый файл своего сайта, чтобы не писать каждый раз один и тот же код. Я делаю это с помощью require_once ("menu.php"); Проблема в том, что когда я нажимаю ссылку, сгенерированную menu.php, она становится относительной ссылкой, поскольку не находит файл. Это мой каталог:

Ссылки из require_once не работают

menu.php:

 <?php echo'
 <div class = "topnav-bar">
 <ul class = "topnav">
  <li class = "dropdown"><a href = "index.php">Home</a>
    <ul class = "dropdown-content">
      <li><a href = "geografia.php">Geografia</a></li>
      <li><a href = "clima.php">Clima</a></li>
      <li><a href = "storia.php">Storia</a></li>
    </ul>
  </li>
  <li class = "dropdown"><a href = "pages/luoghi.php">Luoghi</a>
    <ul class = "dropdown-content">
      <li><a href = "pages/luoghi/chiesette.php">7 Chiesette</a></li>
      <li><a href = "pages/luoghi/catajo.php" class = "active">
       Castello del Catajo</a></li>
      <li><a href = "pages/luoghi/praglia.php">Abbazia di Praglia</a></li>
      <li><a href = "pages/luoghi/carrareseeste.php">
       Castello carrarese di Este</a></li>
      <li><a href = "pages/luoghi/lispida.php">Castello di Lispida</a></li>
      <li><a href = "pages/luoghi/pelagio.php">Castello San Pelagio</a></li>
    </ul>
  </li>
    <li class = "icon">
      <a href = "javascript:void(0);" onclick = "menuMobile()">&#9776;</a>
    </li>
  </ul>
</div>'; ?>

если в "index.php" я нажимаю, например, "chiesette.php", браузер показывает мне URL-адрес http://127.0.0.1/pages/luoghi/chiesette.php. Теперь, если на этой странице я нажимаю на «catajo.php», он показывает мне http://127.0.0.1/pages/luoghi/pages/luoghi/catajo.php.

Что я делаю неправильно?

Добавьте косую черту в начале каждой ссылки, чтобы она начиналась с корня, а не с текущего каталога. Просто убедитесь, что вы добавили полный путь к файлам.

aynber 18.12.2018 17:03

Измените относительные пути на абсолютные, добавив косую черту перед страницами / вот так: <a href = "/pages/luoghi/chiesette.php">

Alexey 18.12.2018 17:05

@Alexey Это на самом деле root-relative URL, обычно в них есть абсолютный протокол.

user3783243 18.12.2018 17:08

установка косой черты была моим решением, которое раньше работало на моей машине, но возникла проблема, потому что мой товарищ по команде использует окна (я использую manjaro), и ссылки для него не работают. Мы оба используем apache2.

JoeGriffin 18.12.2018 17:09
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
168
1

Ответы 1

Когда вы находитесь в index.php, вы находитесь в корневом каталоге, поэтому ссылка будет указывать на правильное место. Из / страницы / луоги из-за отсутствия косой черты он строит ссылку из вашего фактического каталога, например / страницы / luoghui

<li><a href = "/pages/luoghi/chiesette.php">7 Chiesette</a></li>
  <li><a href = "/pages/luoghi/catajo.php" class = "active">
   Castello del Catajo</a></li>
  <li><a href = "/pages/luoghi/praglia.php">Abbazia di Praglia</a></li>
  <li><a href = "/pages/luoghi/carrareseeste.php">
   Castello carrarese di Este</a></li>
  <li><a href = "/pages/luoghi/lispida.php">Castello di Lispida</a></li>
  <li><a href = "/pages/luoghi/pelagio.php">Castello San Pelagio</a></li>

Приведенный выше код (с косой чертой) должен работать, потому что ссылка будет создана от root.

Использование косой черты было моим решением, которое раньше работало на моей машине, но возникла проблема, потому что мой товарищ по команде использует окна (я использую Manjaro), и ссылки у него не работали. Мы оба используем apache2.

JoeGriffin 18.12.2018 17:14

Другие вопросы по теме