6

我注意到.html.php文件扩展名可以互换而没有明显效果。为什么我要使用一个文件扩展名而不是另一个文件扩展名?

4

5 回答 5

4

使用 .html 作为默认值。如果您的页面正在运行 phpscripts,则使用 .php 因此,如果您正在与服务器通信,请使用 .php

于 2013-06-08T01:48:05.553 回答
2

以 .php 结尾的页面可以包含 HTML 和/或 PHP 代码(也可以在其相应标签内包含 javascript、css 等)。请注意,没有任何 PHP 代码的页面仍然具有 .php 扩展名是完全可以的。

但是,如果您的页面确实包含 PHP 代码,则文件扩展名必须是 .php。试试看 - 在大多数 Web 服务器上这不起作用:

文件名:test.html

<?php
    echo 'Hello there';

上面的页面将是空白的。但是,如果将其重命名为test.php,您将看到 hello 消息。

文件扩展名也是您自己或其他程序员关于文件包含什么类型的代码的指标。一目了然,以 .HTML 结尾的文件不包含任何 PHP 代码(尤其是因为其中包含的任何 PHP 代码将无法工作,除非网络服务器配置经过专门修改以允许它)。

最后一点:这些天来,网页完全不以扩展名结尾是令人高兴的。当然,你不能去掉 .php 或 .html 页面的扩展名……但你可以隐藏扩展名(包括句号),使页面看起来像是由 Flask 或 React 等提供的。你这样做通过.htaccess位于您网站根文件夹(与 index.php 或 index.html 相同的文件夹)中的文件(是的,完全一样,点和所有文件)。看:

https://code-boxx.com/hide-php-extension-url-htaccess/

https://tecadmin.net/remove-file-extension-from-url-using-htaccess/

这是一个帮助构建 .htaccess 文件的有趣工具

于 2013-06-08T01:51:40.707 回答
2

.html 和 .php 是文件扩展名,但更重要的问题是它们是如何运行的。

.php 文件可以运行服务器端脚本并接受 mysql 查询并打开连接等......所有这些都是服务器端功能。

Html 是静态的,只显示静态内容,但现在 HTML 5 改变了。我建议你做一个简单的搜索,以了解更多关于 php 和 html 及其根本区别的信息。

于 2013-06-08T01:52:13.397 回答
1

根据配置和上下文处理文件。Shebangs、默认程序、Apache Handler's、HTTP Headers 等描述了在各种场景中处理文件。

在终端中执行文件

.php扩展名表明它是一个 PHP 脚本,但扩展名不是必需的。

示例文件.php

<?php
echo 'Hello World';

该脚本可以用PHP执行,因为扩展名很清楚:

> php example-file.php

示例2-文件

#!/usr/bin/env php
<?php
echo 'Hello World';

通过第一行的 shebang,操作系统可以尝试为用户使用正确的解释器,以便将命令简化为:

> ./example2-file

通过删除文件扩展名,一些实现细节对用户隐藏。

包通常保留源上的扩展名,但在安装过程中删除扩展名。

默认程序

扩展可以向操作系统指示使用哪个程序来打开文件。

以我的计算机结尾的文件.php在 IDE 中打开以进行编辑,而.html文件在浏览器中打开。

服务器和标头

Web 服务器可以发送具有任何扩展名和内容类型的文件,因为许多文件实际上并不存在,而是动态生成的。

PHP Web 服务器将.php使用 content-type 提供文件,text/html因为 PHP 被解释为文本。配置为将原始 PHP 文件作为另一种内容类型返回的服务器,即未配置为 PHP 的服务器,将导致 Web 浏览器下载源文件,而不是以 HTML 格式查看呈现的文件。

由于执行后生成的文件是 HTML 并且 Web 服务器可以指定扩展名,因此一些开发人员决定.html在 URL 中使用并让它们与.php要执行和返回的文件相关联。或者 URL 根本不能使用扩展名。

于 2017-05-22T00:42:24.843 回答
0

在 PHP 中使用不同的扩展名与在任何语言中使用的目的相同——它可以更容易地确定您正在使用的文件类型。

您可能希望通过不通过 PHP 处理器运行文件来减轻 Web 服务器的负担.html,或者您可能希望不标记 PHP 文件.php以帮助隐藏您在服务器端使用的技术。

于 2013-06-08T01:49:26.943 回答