【问题标题】:Show HTML content wit PHP (and load style)使用 PHP 显示 HTML 内容(和加载样式)
【发布时间】:2019-08-06 07:48:46
【问题描述】:

我有一些使用一些样式和脚本的 HTML 页面(在“web”文件夹中),我需要使用 PHP 脚本来显示这些 HTML 页面。这是我正在使用的代码的简化版本:

<?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' />

它没有找到资源,因为它正在寻找与 PHP 脚本相同的文件夹中的 css 文件夹。

有什么解决方法吗?

【问题讨论】:

  • 用于css、js和图片的url不需要是绝对的。事实上,您希望它们是相对的,因为这将使您将来更容易将您的网站迁移到另一个域。至于您的问题,我建议简单地修复相对路径,使其不再与您的 PHP 脚本位于同一文件夹中。
  • @Mathyn 问题是我有数百个 HTML 页面,我不想更改它们。而且每个 HTML 都有不同的资源,所以我不能只将这些文件夹放到根文件夹中,因为它们具有相同的名称。
  • 啊对的好点。我认为@Uwe Ohse 的回答可能会有所帮助!

标签: php html .htaccess http-status-code-404


【解决方案1】:

您需要将 &lt;base href='...'&gt; 添加到 html 中,如下所示(未测试):

$page_content=preg_replace("%</head%i","<base href='web/'></head",$page_content);

在读取文件之后插入它。见MDN web docs for more information about that tag

在某些浏览器(至少是 Firefox 和 edge)中,如果您在输出 $page_content 之前打印基本标签,它也可以工作。它很脏,但也许已经足够了。

【讨论】:

  • 它有效,谢谢!如果有人有更清洁的方法,请告诉我:)
【解决方案2】:

简单的你可以使用这样的东西

index.php

<html>
 <head>
  <php include("menu.php"); ?>
 </head>
<body>

</body>
</html>

menu.php

<link href="css/bootstrap.css" rel='stylesheet' type='text/css' />
<link href="css/style.css" rel='stylesheet' type='text/css' />

对于基本路径,使用$base = "http://localhost" 之类的变量,然后使用&lt;img scr="&lt;?php $base ?&gt;/images/myimage.jpg" /&gt; 之类的元素

希望这能回答你的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 2016-06-17
    相关资源
    最近更新 更多