【问题标题】:How can I save a PHP file with a .php or .html extension?如何保存扩展名为 .php 或 .html 的 PHP 文件?
【发布时间】:2011-07-06 12:43:33
【问题描述】:

为什么我们有一个 .php 格式的 PHP 文件?我们可以将 PHP 文件保存为 .html,因为在某些网站上,我看到了带有 .php 扩展名的网页吗?为什么我们不能为 PHP 文件添加 .html 扩展名?

它会影响 PHP 文件在 PHP 服务器引擎上的执行吗?如果我们将其作为 .html 文件,其中包含 PHP 代码。

【问题讨论】:

  • 真的吗?如果页面保存为 .html,PHP 引擎将直接传递,您的 PHP 代码将呈现为纯文本
  • @benhowdle89 - 实际上您可以配置服务器以通过 PHP 解析器发送 .html 文件(或任何其他扩展名)。不一定是个好主意,但可以做到。

标签: php html .htaccess xampp


【解决方案1】:

如果你真的想用 .html 文件来提供你的 PHP 代码,可以这样做。

您的网络服务器配置为通过查看扩展名来检测文件类型。默认情况下,它将通过 PHP 解释器路由 .php 文件,而 .html 文件将直接提供给最终用户。您可以通过服务器的配置文件或单个 Web 目录的本地 .htaccess 文件来配置此行为。请参阅@kjy112 的答案以了解如何执行此操作。

问题是为什么?这样做对你来说很重要,还是只是你想要的东西。问问自己:您的最终用户会关心吗?甚至注意到?

默认情况下以这种方式配置浏览器的原因是,可以将没有任何 PHP 代码的纯 HTML 文件提供给用户,而无需通过 PHP 解释器处理的开销。通过更改配置,您的所有 HTML 文件都将被解释为 PHP,即使它们实际上不包含任何 PHP 代码,因此您将向服务器添加额外的处理负载。当然,如果您的所有文件都包含一些 PHP 代码元素,那么无论如何您都会想要这种行为,所以这显然不会让您担心。

这样就可以了。但可能有更适合您的解决方案:

目前 SEO(搜索引擎优化)的趋势是完全摆脱 URL 中的文件扩展名。如果您查看此问题的 URL,您会发现它有一个非常具有描述性的 URL,并且没有扩展名。如果您想遵循最佳实践的当前趋势,您可能需要考虑沿此路线走。

这是使用mod_rewrite 完成的。 URL 的描述部分是完全任意的:如果你改变它,页面仍然会正确加载。重要的部分是描述前的ID号;描述只是为了提高页面的谷歌排名。对所涉及技术的完整讨论超出了此问题的范围,但周围有大量资源可以帮助您(尝试在此站点上搜索 mod_rewrite 开始)。

注意:我在这里给出的所有特定服务器配置建议都适用于 Apache Web 服务器。如果您使用的是 IIS 或其他一些服务器产品,您可能需要相应地对其进行调整。

【讨论】:

  • 什么更好,根据你修改.htaccess文件或url重写。
  • @Demla Pawan:如果我们仍然在 URL 中讨论 .php v .html,那么它对最终用户没有任何影响。对于服务器,修改 .htaccess(或者更好的是,主服务器配置)将更有效,因为它将直接访问命名文件,并且不必通过像 mod_rewrite 这样的正则表达式解析器运行每个 URL。然而, mod_rewrite 选项意味着如果用户浏览它们,则 .php 和 .html 版本的 URL 都可以工作。对于更复杂的 URL 解决方案,例如我描述的 SEO 技术,mod_rewrite 是正确的答案,因为这不能简单地通过重命名文件来完成。
【解决方案2】:

你可以这样做,但你必须修改你的.htaccess文件:

RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html

【讨论】:

  • 如果,我们将文件保存为 .html,并设置您对 .htaccess 文件所说的规则,此规则是否强加于服务器上的每个文件,或者它将集中在某个特定目录,这是需要的送达。
  • @DemlaPawan .htaccess 文件提供了一种基于每个目录进行配置更改的方法。 httpd.apache.org/docs/current/howto/htaccess.html 如果您确实有权访问主服务器配置,如果您希望它影响整个服务器,则可以将其应用于该配置,但一般来说,应用于整个服务器并不是一个好习惯
【解决方案3】:

Rewrite Info here

file.htm 的所有请求都将发送到 file.php

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*)\.htm$ $1.php [NC]

【讨论】:

  • 什么更好,根据你修改.htaccess文件或url重写。
【解决方案4】:

kjy 的答案的替代方法是使用 URL 重写,它可以让你使用任何你想要的页面扩展名/文件名。

【讨论】:

  • 什么更好,根据你修改.htaccess文件或url重写。
  • @Demla 重写网址,这基本上是标准。如果您移动服务器,它也将更加便携,并且您无需担心如果有人设法注入了所有 HTML 页面突然执行 PHP 代码的安全风险。它还为您提供了更多关于如何显示页面名称的选项。
  • 如何进行 URL 重写(在这种情况下)?一个相关的(足够具体的)链接可能就足够了。
猜你喜欢
  • 1970-01-01
  • 2017-12-13
  • 2015-06-26
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多