为什么这个 html 代码不起作用


Why doesn't this html code work?

给定以下index.html文件:

<html>
<body>
<p>Welcome to <?= $_SERVER ['HTTP_HOST']; ?></p>
</body>
</html>

我希望看到"欢迎来到 EXAMPLE.COM",我看到的只是"欢迎来到"。如果代码签出,什么会导致这种情况发生?

您的文件名为 index.html 。除非你告诉你的服务器.html文件应该被视为PHP脚本,这意味着PHP代码没有被执行 - 它以文字文本的形式发出。由于PHP标签使其看起来像HTML,因此您的浏览器正确隐藏了该未知/非法标签。

将其重命名为 index.php

它没有运行,因为该部分不是html(它是php),但是您已将其保存为html文件而不是php文件。

将其重命名为索引.php然后重试?

Web 服务器通常配置为仅在扩展名为 .php 的文件上运行 PHP。您的index.html文件将按原样传递到浏览器,浏览器可能会忽略未知的 PHP 标签。如果你看一下网页的源代码,标签可能会在那里。


如果必须具有.html扩展名,通常可以将 Web 服务器配置为在.html文件上运行 PHP。例如,在 Apache 中,您可以在.htaccess文件或服务器配置 ( httpd.conf ) 中使用 AddType 指令:

AddType application/x-httpd-php .html

但是,这将在所有.html文件(在该目录中)上运行 PHP,这可能会给服务器带来不必要的负载。


更好的方法是使用不带扩展名的 URL。在 Apache 中,您可以使用 DirectoryIndex 指令指定 Web 服务器将搜索的索引文件列表:

Options +Indexes
DirectoryIndex index.html index.php

当浏览器请求以斜杠结尾的 URL(例如 http://mydomain.example/foo/)时,服务器将在DocumentRoot中搜索foo/index.htmlfoo/index.php(或者,如果两者都失败,则生成目录列表)。现在,您可以使用适合当前的任何类型的索引文件,而无需更改 URL。