Спокойно. Писать пути я умею. Мне интересно, как правильно навести "порядок в файлах", не запутаться и не создавать сотни папок (дублировать тоже не охото).
Пример:
У меня есть директория puplic_html, и вот пошли файлики(порядок написанного не соответствует сортировке):
css
fonts
php
js
services
img
index.html
В папке "services" лежат папки с сайтами услуг
как мне правильно приписывать пути к папке img js php в корне ?
Я писал так: img src=".../img/icons/nameicon.png" alt=""
Анатолий уже ответил, немного структурирую информацию, может кому пригодиться. Нужно отличать пути в файловой системе и на сайте (через веб-сервер). У каждой файловой системы есть корень - это / (слеш), если путь начинается со слеша, это абсолютный путь от корня файловой системы, если начинается не со слеша, это относительный путь (относительный - потому что относительно текущего положения файла). Относительные пути могут начинаться с ../ и ./ - вариант с двумя точками это выход на уровень выше, вариант с одной строкой - это аналогия как я без ничего, то есть в текущей папке.
Зачем нужны относительные пути? Чтобы укоротить путь или убрать зависимость от места хранения файлов, пример: Вы разрабатываете сайт, некоторые статические файлы лежат глубоко в папке с названием пакета, номера версии, юзера, мы прописали в скрипт картинку, скрипт находиться в папке /static/vasya/script - а прописанный абсолютный путь от корня веб-сервера картинки /static/vasya/images, в конце vasya - это автоматически созданные папки пользователей, этот Вася меняет логин на supervasya - по какой-то причине у Вас создан функционал, который переименовывает папки юзеров при изменении логина. И получается что путь изменился и картинка больше не работает (если путь не меняется автоматом), чтобы такой ситуации не было можно использовать просто относительные пути, так как папки script и images находятся в одной папке (/static/supervasya) то просто водим на один уровень выше и заходим в папку images и получаем наш файлик, то есть проще и работать будет всегда (если папки относительно друг друга не менялись). Относительный путь выглядеть будет так ../images.
История с абсолютными путями веб-сервера выглядит похожим образом, нужно запомнить, что / (то есть корень сайта) это та папка, которую мы прописываем в конфиге как root, то есть если корень веб-сервера /var/www/site.name/web то картинка picture.jpg, которая лежит в папке /var/www/site.name/web/images/ на сайте всегда!!! будет иметь вид /images/picture.jpg вне зависимости от того в какой папке находиться файл, где будет прописан этот путь, повторюсь - это все потому что путь начинается со слеша.
Если стоит вопрос какие пути для сайта выбрать, то лучше делайте абсолютные то есть от корня со ведущим слешем спереди.
Теперь, почему абсолютные пути сайта не работают в файловой системе на компе разработчика, все очень просто - корень веб-сервера это папка внутри проекта, а когда мы открываем хтмл файл вне веб-сервера, мы имеем дело с корнем той файловой системы где это лежит, то есть от корня диска и поэтому пути не совпадают, поэтому всегда веб-разработку начинайте с установки веб-сервера (denwer, openserver, vagrant или docker с установленными веб-серверами и т.п.). Знания того как это работает когда-нибудь да пригодятся, особенно когда начнёте копать куда-то глубже чем верстка (а копать рано или поздно начнёте). Работать без веб-сервера можно, но нужно понимать специфику и понимать, что иногда в очень крайних случаях могут быть ошибки типа не сработает images/pictures.jpg, но сработает ./images/picture.jpg, почему так? Разные ОС, версии пакетов, особенности разных веб-серверов и фаз Луны и дня в женском календаре жены ведущего разработчика пакета, который пять лет не менялся и все работало, а потом внезапно сделал рефакторинг без изменения функционала и пути сломались. Ну в общем Вы поняли
а что если я не хочу создавать папку img в папке с сайтом, а просто вывести ее в корень директории и там располагать всемит jpg png файлами? Или допустим тоже самое только с папкой css?
mrbykovoleg, не получится. Так можно делать только с server-side скриптами, который работают друг с другом на уровне путей файловой системы.
Файлы jpg,css и т.д. в отличии от серверных скриптов должны быть доступны из браузера через http, а это возможно только в том случае, если они находятся не ниже директории, доступной из www.site.ru
Сами подумайте - иначе тогда я мог бы прочитать любой файл вашего сервера, написав
Анатолий Цивилёв, Т.е в моем случае мне только дублировать одни и те же файлы в папку со страницей? Или все страницы выводит в корень? (как и было изначально, кстати)
смотрите код. Путь относительный я указал там, безо всяких ../../
Структура файлов у меня там сейчас такая:
/test/img/1.jpg
/test/index.html
/test/2/index.html
/test/2/3/index.html
/test/2/3/4/index.html
Видите - картинка одна. Никуда я её не копирую. лежит себе и все. Все файлы index.html - одинаковые. Я там никакие пути не менял на ../ при углублении каталога
Анатолий Цивилёв, Либо я дурак, либо лыжи летом не едут. Допустим public_html (самый главный корень) в нем папка "service", в этой папке лежит допустим "usluga1", а в этой папке лежит файл usluga.index. В этом файлике есть допустим строка img src="/img/icons/icon-1.png" alt="" и этот код возьмет картинку из папки "img" в папке public_html? Или в папке "service" он зайдет в "img"?
Знак "/" - это значит начать с корня, и никуда не лезть. Я вам пример с вложенными папками же выше дал - смотрите, как меняется адрес файла index.html (то он в папке 2, то в папке 2/3, то в папке 2/3/4) а картинка - лежит на месте. Она одна единственная, и я её не таскаю за index.html
mrbykovoleg, тогда просто "имякартинки.jpg" без /
если скрипт php тоже в public_html.
Если php файл в public_html/services/ то "../имякартинки.jpg",
только вот сдается мне что вы вообще не понимаете, зачем нужен php, как он обрабатывается, и какой путь обрабатывается в браузере а какой - на стороне клиента.
Вы картинку в php файле вывести хотите? Этим занимается не php, а браузер на стороне клиента, и там относительные пути ни к чему.
Вам стоило бы взять, запустить сервер, и потренироваться с путями - вопрос пропадёт сам собой путём экспериментирования в течении 1-й минуты. А тут вы там и будете плодить вопросы, не понимая разницу в сути php
Анатолий Цивилёв, Все верно, я верстальщик. Пишу сайты для себя (обучаюсь сейчас целеустремленно). А файл php только один у меня, он отправляет данные из формы и все) Мне больше и не нужно, и желания нет изучать. Html css js - это все, что мне нужно )
Разархивируйте куда вашей душе угодно, и запустите.
Создастся диск Z:/ в котором все скрипты будут вести себя так же как и в браузере относительно корня сайта.
mrbykovoleg, замените в start.bat
строку iexplore.exe на путь до екзешника браузера, которым вы пользуетесь, или просто удалите эту строку, а файл TEST запускайте самостоятельно из диска Z: (обязательно именно из Z: а не оттуда куда вы распаковали - в этом вся фишка).
Там если вы заметили - я создал примерную структуру папок, что вы указывали в вопросе (/public_html/css, public_html/img, public_html/js, public_html/sevices) - это должно вам помочь поянять всю суть.
Когда поймете, что такое отностительный путь с корня / , то можете попробовать поэкспериментировать с файлами index.html, /services/index.html и /services/other/index.html меняя в них / на ../../ - заметите то, что я вам говорил ранее:
Если сейчас все файлы index.html в любой папке - абсолютно одинаковые, и пути в них одинаковые, то заменив пути на ../ вам придется в каждом index.html менять эти пути - ведь глубина вложенности index.html в этих папках разная.
Анатолий Цивилёв, дома в уютной обстановке сделаю) Единственное, чего я хотел бы, что моим наставником были вы. Не полениться и написать батник это сильно) прогеры некоторые бесплатно и совет не дадут. лайк
Домой придете, напишите на antipetya@yandex.ru, я через тимвьювер зайду, объясню все подробно. Сейчас хотел видео рабочего стола с объяснением записать, но надо бежать по делам
Анатолий Цивилёв, может быть раз такое дело пошло, то подтяните меня по js за какое-то вознаграждение? Мне бы только научиться делать всякие анимации, фотки открывать в модальном окне, какие то слайдеры.
mrbykovoleg, как у вас язык поворачивается, назвать себя верстальщиком??? Даже я похихикала над вашими вопросами для Анатолия и попыткой поспорить. Пожалуйста, называйте себя просто самоучкой, не называйте себя верстальщиком, вы им не являетесь.
Чет наткнулся на пост, Талян - красава, Олежка - познает суровость бытия, Существо - предположительно, женского пола, что ничё не сказало, но обосрало.
Верстальщики, как и программисты, делятся по уровням:
- недоджуниор
- джуниор
- миддл
- сеня
Верстальщиком может себя назвать любой, кто сможет объяснить написанный стартовый шаблон, остальное - дело практики.
Интересно, как там судьба у Толика и Олежки сейчас?