Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Слетают стили (https://javascript.ru/forum/server/85881-sletayut-stili.html)

firep91613 02.05.2024 21:21

Слетают стили
 
Друзья, еще одна проблемка нарисовалась. Если в URL набрать localhost:4000/blog/, то стили загружаются, а если localhost:4000/blog - нет.

В папке blog: index.php, style.css. В index.php указано href="style.css". Я что-то не могу догнать, почему так происходит?

micscr 03.05.2024 07:35

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

От корня.

У вас - "style.css" - оно ориентируется на урл, по нему решает где

firep91613 03.05.2024 12:42

micscr,
echo __DIR__; // /learning/blog
<link rel="stylesheet" href="<?= __DIR__ . '/style.css' ?>"> // The requested resource /learning/blog/style.css was not found on this server.


Видимо это из-за докера.

firep91613 05.05.2024 13:32

Nexus, может вы знаете?

Nexus 05.05.2024 16:44

Так просто не сказать в чем проблема.

Константа __DIR__ вставляет абсолютный адрес текущей директории, но не относительно корневой директории приложения.
Обычно на сервере настраивается корневая директория приложения (директива DocumentRoot для Apache и root для nginx), а файлы ресурсов указываются уже относительно этой директории.

Например, если дерево файлов такое:

Код:

/learning - рабочая директория приложения
    /public - корневая директория приложения
        /assets
            /css
                /app.min.css
        /blog
            /styles.css

То корневая директория указывается как /learning/public, а ресурсы подключаются относительно директории public: /assets/css/app.min.css и /blog/styles.css

firep91613 05.05.2024 18:37

Nexus,
спасибо.
Код:

sudo docker run -p 4000:4000 -v "$(pwd)":/learning -w /learning php_learning php -S 0.0.0.0:4000 -t /learning/blog

<link rel="stylesheet" href="/style.css">

Так заработало.


Часовой пояс GMT +3, время: 18:04.