У меня есть файл меню, который я хочу включить в каждый файл своего сайта, чтобы не писать каждый раз один и тот же код. Я делаю это с помощью require_once ("menu.php"); Проблема в том, что когда я нажимаю ссылку, сгенерированную menu.php, она становится относительной ссылкой, поскольку не находит файл. Это мой каталог:
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()">☰</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.
Что я делаю неправильно?
Измените относительные пути на абсолютные, добавив косую черту перед страницами / вот так: <a href = "/pages/luoghi/chiesette.php">
@Alexey Это на самом деле root-relative URL, обычно в них есть абсолютный протокол.
установка косой черты была моим решением, которое раньше работало на моей машине, но возникла проблема, потому что мой товарищ по команде использует окна (я использую manjaro), и ссылки для него не работают. Мы оба используем apache2.






Когда вы находитесь в 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.
Добавьте косую черту в начале каждой ссылки, чтобы она начиналась с корня, а не с текущего каталога. Просто убедитесь, что вы добавили полный путь к файлам.