У меня есть несколько HTML-страниц (в папке «web»), которые используют некоторые стили и сценарии, и мне нужно показать эти HTML-страницы с помощью PHP-скрипта. Вот упрощенная версия кода, который я использую:
<?php
readfile("web/index.html");
Он работает, но не загружает никаких ресурсов (css, js, изображения), потому что URL-адреса не являются абсолютными:
<link href = "css/bootstrap.css" rel='stylesheet' type='text/css' />
<link href = "css/style.css" rel='stylesheet' type='text/css' />
Он не находит ресурсы, потому что ищет папку css в той же папке, что и PHP-скрипт.
Любое обходное решение для этого?
@Mathyn Проблема в том, что у меня есть сотни HTML-страниц, и я предпочитаю их не менять. и каждый HTML имеет разные ресурсы, поэтому я не могу просто перенести эти папки в корневую папку, поскольку они имеют одинаковые имена.
Ах, правильно, хороший момент. Я думаю, что ответ @Uwe Ohse может помочь!






Вам нужно добавить добавить <base href='...'> в html, например (не проверено):
$page_content=preg_replace("%</head%i","<base href='web/'></head",$page_content);
вставьте это после readfile. См. Веб-документы MDN для получения дополнительной информации об этом теге.
В некоторых браузерах (по крайней мере, Firefox и Edge) это также работает, если вы печатаете базовый тег перед выводом $page_content. Это грязно, но, может быть, это достаточно хорошо.
Это работает, Спасибо! Если у кого-то есть более чистый способ, пожалуйста, дайте мне знать :)
Просто вы можете использовать что-то вроде этого
index.php
<html>
<head>
<php include("menu.php"); ?>
</head>
<body>
</body>
</html>
меню.php
<link href = "css/bootstrap.css" rel='stylesheet' type='text/css' />
<link href = "css/style.css" rel='stylesheet' type='text/css' />
для базового пути используйте некоторую переменную, например $base = "http://localhost", затем используйте свои элементы, например <img scr = "<?php $base ?>/images/myimage.jpg" />
Надеюсь, что это ответ на ваш вопрос
URL-адреса, используемые для css, js и изображений, не обязательно должны быть абсолютными. На самом деле вы бы хотели, чтобы они были относительными, так как в будущем будет проще перенести ваш сайт на другой домен. Что касается вашей проблемы, я предлагаю просто исправить относительный путь, чтобы он больше не находился в той же папке, что и ваш PHP-скрипт.