【问题标题】:htaccess modifications working on some pages but not on others?htaccess 修改在某些页面上起作用,但在其他页面上不起作用?
【发布时间】:2012-04-13 04:32:42
【问题描述】:

我一直在尝试在扩展名为 .htm 或 .html 的文档中执行 php 代码。我终于让它工作了:

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

现在,能够在 .htm 文档中执行 php,只有当我直接进入 .htm 页面时才有效,例如:http://www.foobar.com/layout.htm

但是,如果我转到 使用那个 layout.htm 页面的 index.php 页面,它就不起作用...

这是索引页面 url 的示例:http://www.foobar.com/index.php

我做错了什么?

【问题讨论】:

  • 你是如何使用页面的?
  • 布局页面包含 {HEADER} 等标签以及大括号中的其他类似名称。我不太熟悉使用它...除了它是一个普通的 html/css 页面。我确实知道,如果我将 html 添加到 layout.htm 文件(不使用任何 php),它会很好地显示在 index.php 页面上。但是,如果我使用 php 修改布局页面,则更改仅在我直接进入 layout.htm 页面时才会出现,而不会出现在 index.php 页面上。
  • 您需要发布使用 htm文件的php代码部分。

标签: php html apache .htaccess xampp


【解决方案1】:

假设您在 php 文件中使用 include 之类的东西来包含 html 文件,您的 .htaccess 规则不会对包含的文件产生任何影响。

.htaccess 规则仅在向 apache 网络服务器发出的请求上执行,当您在 php 中包含本地文件时,您只是在请求本地文件系统上的文件;你不是通过 apache 请求它。

编辑:根据您问题下方的评论,您也有可能使用 readfile 之类的东西来获取 htm 文件的内容。如果是这种情况,您需要将其更改为 include 以便执行 php。

【讨论】:

  • 我正在使用php包含函数。
【解决方案2】:

您的 .htaccess 规则不适用于 php 中包含的文件。

您是否查看过此页面:http://php.net/manual/en/function.include.php

当包含一个文件时,解析会在目标文件的开头退出 PHP 模式并进入 HTML 模式,并在结尾处再次恢复。因此,目标文件中应作为 PHP 代码执行的任何代码都必须包含在有效的 PHP 开始和结束标记中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2019-06-14
    相关资源
    最近更新 更多