Относительные ссылки и использование include

394
03 февраля 2017, 07:17

Всем доброго времени суток.

Шапка сайта, навигация и подвал лежат в отдельных php-файлах внутри папки pages (mysite.ru/pages/header.php и т.д.). В файле навигации прописаны относительные ссылки к страничкам. Если использую index.php (он расположен в корне сайта, при помощи include "file_name.php"; подключаю нужные файлы), то всё работает правильно. Если обращаюсь к этим файлам из подпапки, то уже ссылки идут не на поиск файлов в корне, а в этой самой подпапке (например: mysite.ru/folder/index.php вместо mysite.ru/index.php). Как исправить этот момент в навигации?

P.S. Если моё решение (в корне лежит только index.php, в папке pages шапка, навигация и подвал, а в остальных папках файлы по разделам сайта) считаете глупым/неверным, то подскажите, как лучше сделать.

Answer 1

к инклюдам этот вопрос не имеет никакого отношения.

В файле навигации прописаны относительные ссылки к страничкам.

Это неправильно. Ссылки должны быть абсолютные:

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

Если у вас на сайте есть, допустим, два раздела:
http://www.example.com/about/info.php
и
http://www.example.com/job/vacancy.php

то, если в файле info.php сделать ссылку просто на vacancy.php, то браузер ее не найдет - он будет искать адрес http://www.example.com/about/vacancy.php, достраивая путь от текущего каталога.

Поэтому надо писать полный путь от корня сайта - /job/vacancy.php
Всё это касается, естественно, не только тегов но и и любых других, где используются ссылки на другие файлы.

Ссылки на локальные адреса следует писать без указания протокола и домена - только путь от корня сайта - /job/vacancy.php. Ссылки же на другие сайты следует писать полностью - http://www.example.com/job/vacancy.php.

Answer 2

чтоб вернуться на уровень выше пишите ../. Если нужно с папки обратится в соседнюю папку тогда сначала выходим с текущей папки и заходим в нужную:

../folder/file.php

Возможно вам лучше будет использовать абсолютный путь..

"http://" . $_SERVER['SERVER_NAME'].. и сюда уже прописывать в ссылках остальной путь. Н-д :

"http://" . $_SERVER['SERVER_NAME'] . "/folder/header.php".

Тогда независимо откуда вы обращаетесь к файлу ссылка не меняется - не взникает путаницы

Answer 3

Лучше использовать структуру MVC, может будет не настолько удобно как в твоем случае но правильнее и не будет путаницы

READ ALSO
Перенос с wordpress [требует правки]

Перенос с wordpress [требует правки]

Возможно ли перенести сайт с wordpress на свой движок? И сколько будет примерно стоить?

345
Авторизация пользователя на php/mysql/session

Авторизация пользователя на php/mysql/session

Делаю авторизацию, возникла такая проблемаПри нажатии на <a href="logout

407
Как добавить нули в пустые строки таблицы чтобы вывести все значения одной строкой?

Как добавить нули в пустые строки таблицы чтобы вывести все значения одной строкой?

Пробую достать данные из 2 столбца таблицы, вроде бы получается, единственное это не могу додумать как вместо пустых ячеек добавить нольИ...

319
Не отображаются изображения на localhost (React)

Не отображаются изображения на localhost (React)

Добрый день, проблема в том, что не открываются изображения, даже если оно лежит в той же папке, что и сам компонент

450