htaccess 修改在某些页面上起作用,但在其他页面上不起作用?
Posted
技术标签:
【中文标题】htaccess 修改在某些页面上起作用,但在其他页面上不起作用?【英文标题】:htaccess modifications working on some pages but not on others? 【发布时间】: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代码部分。 【参考方案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 开始和结束标记中。
【讨论】:
以上是关于htaccess 修改在某些页面上起作用,但在其他页面上不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
为啥应用于 bootstrap.css 的更改在发布时不起作用,但在 localhost 上起作用?
媒体查询在 chrome 中不起作用,但在 iphone 上起作用
Ionic 功能在 Ionic View 中不起作用但在 Web 上起作用的潜在原因
UITableView 自定义单元格在 iPad Storyboard 上不起作用,但在 iPhone 上起作用
MKUserTrackingBarButtonItem tint color IOS7 不起作用,但在 IOS 6 上起作用