htaccess 中的 AddType 导致页面下载

Posted

技术标签:

【中文标题】htaccess 中的 AddType 导致页面下载【英文标题】:AddType in htaccess causes page to download 【发布时间】:2013-06-06 03:09:55 【问题描述】:

我已经阅读了大约 10 个这样的问题,但这个简单的问题似乎没有答案。

什么可能导致 .htm 文件被下载而不是作为 php 执行?

我正在使用以下代码:

AddType application/x-httpd-php htm

我尝试了很多组合,但都没有成功。

我还能尝试什么?

我只需要 .htm 和 .html 文件来执行 php。

【问题讨论】:

使用 curl -vwget -S 检查脚本的 Content-type 响应头。 内容类型:application/x-httpd-php 所以忘了我下面说的,我们知道application/x-httpd-php是正确的。 你有 php 作为模块还是 cgi 脚本?试试php.net/manual/en/install.unix.apache2.php 【参考方案1】:

也使用AddHandler,将htm 更改为.htm 并添加.html

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

http://www.suffix.be/blog/addhandler-addtype-directives

【讨论】:

你看到了什么? php是否安装正确?如果您将<?php phpinfo(); ?> 放入.php 文件中会执行吗? 我在我的 html 页面上得到了这个: 由于某种原因 php 被注释掉了。 您使用的是localhost 还是共享主机或...?有时只是 x-httpd-php 而不是 application/x-httpd-php 工作...... 我正在使用测试服务器。我尝试了所有可能的组合,包括这个 还有一件事...确保 .htaccess 允许覆盖启用 AllowOverride All httpd.apache.org/docs/2.0/mod/core.html#allowoverride【参考方案2】:

我遇到了同样的问题,但后来我发现我正在使用的 php 版本是 php5。我将处理程序更改为以下内容并且有效!

AddHandler x-httpd-php5-3 .php
AddHandler application/x-httpd-php5 .php

【讨论】:

【参考方案3】:

我遇到了同样的问题,在这里找不到答案。确实在这个 cpanel 论坛上找到了它: https://forums.cpanel.net/threads/php-script-is-not-working-in-html-file.595195/

他们的建议是使用这个:

AddHandler application/x-httpd-ea-php56 .htm .html .shtml
AddType application/x-httpd-php5 .php

不过,我将 PHP 与 JSON 一起使用。在此 PHP 确实工作之后,但 JSON 没有。通过删除 AddType 并坚持使用 AddHandler 解决了它

AddHandler application/x-httpd-ea-php56 .htm .html .shtml

【讨论】:

【参考方案4】:

我正在分享我自己对这个超级令人沮丧的问题的经验。我的主机被另一家主机提供商接管,他们改变了技术。其中一项更改允许我随意编辑我自己的 PHP 版本,但绝对没有一个(从最低的 5.4 到最高的 7.2)正常工作。我在我的所有域中使用了一个全局 .htaccess(放置在根目录中),并且我的 AddType-s 和 AddHangler-s 在文件的开头。我知道的很少——当我更改 PHP 版本时,这个小家伙写了正确的字符串,定义了我的 PHP 版本的正确名称在那个 .htaccess 文件的最后。当我在文件开头定义类型时,我使用了错误的句柄并且完全跳过了底部声明,Apache 没有识别该技术并决定直接下载。

所以请注意您的托管服务提供商上的自定义 PHP 句柄定义

最后对我有用的是:

<IfModule mime_module>
  AddType application/x-httpd-ea-php72___lsphp .php .php7 .phtml .htm .html
</IfModule>

注意附加在标准“x-httpd-ea-php72”句柄末尾的“___lsphp”...

天哪,这把我吃了这么多……

【讨论】:

这里有类似的经历。我必须添加AddHandler application/x-httpd-alt-php73___lsphp .html .htm。我不确定是否有一种简单的方法可以计算出这个名字。我的托管服务提供商帮助了我。【参考方案5】:

在 Apache 和 nginx 中只能工作 .htaccess 文件:

<FilesMatch "\.html$">
    SetHandler php-script
</FilesMatch>

我还从 Apache conf 中删除了 AddHandlerAddType(我使用了 plesk)。

【讨论】:

谢谢Serghej,这个问题已经有7年了,但我很感激你的建议。【参考方案6】:

将此行添加到您的 .htaccess 文件中(已解决)

AddHandler application/x-httpd-php5 .php .php4 .php5 .html .htm .phtml .shtml

【讨论】:

AddHandler 应用程序/x-httpd-php5 .php .php4 .php5 .html .htm .phtml .shtml【参考方案7】:

尝试: 应用程序/x-httpd-ea-php5 或 适用于 PHP 5.6 的 application/x-httpd-ea-php56 升级到 EasyApache 4 后我不得不更改为这个

道格 Smartlab 软件

【讨论】:

【参考方案8】:

试试

AddHandler fcgid-script .htm .html

或者

AddHandler x-mapp-php5 .html .htm 

【讨论】:

【参考方案9】:

将此添加到 .htaccess 文件中

AddType application/x-httpd-php .php .php5 .phtml

【讨论】:

以上是关于htaccess 中的 AddType 导致页面下载的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 导致下载所有页面

使用 .htaccess 文件后,从我网站上的一个页面重定向到另一个页面会导致 404 错误

使用 .htaccess 控制某些页面上的 HTTPS

使用.htaccess删除扩展名,但保留参数会导致页面样式不符

将Apache的.htaccess转换到nginx中

HTML5 缓存清单和内容类型