处理HTML文件的方式类似于PHP

8
我一直在尝试让.html文件像.php文件一样进行处理,使用.htaccess文件。我已经尝试了以下两种方法,但都无法正常工作,尝试访问测试页面会给我一个下载不存在文件的选项。我该怎么解决这个问题呢?
我尝试了这两种方法;
AddType application/x-httpd-php .html .htm

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

“想法”是允许在我的网页中包含内容,但仍然使用.html文件。
以下是我.htaccess文件中的更多代码,我不认为它会干扰addType,但我会将其发布出来。
## Hide .html extension
# To externally redirect /dir/foo.html to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1 [R,L,NC]

## To internally redirect /dir/foo to /dir/foo.html
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [L]

1&1 IONOS已决定只允许我使用以下代码来完成它;

AddHandler x-mapp-php5 .html .htm

你需要添加 AddHandler application/x-httpd-php .html .htm - Funk Forty Niner
这也帮了我,由于某种原因,主机LCN也决定变得困难,只允许“AddHandler x-mapp-php5 .html .htm”。我会建议我的客户离开! - tim.baker
5个回答

9
你需要添加

标签。

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

@Switchfire 尝试在没有.htaccess的情况下测试。我很确定问题可能出在那里。这应该可以工作,我自己也使用它。暂时删除.htaccess或禁用它。 - Funk Forty Niner
我已经禁用它并使用了一个新的干净的.htaccess文件,但仍然无法工作。我正在使用一个带有echo的.html文件,但什么也没有发生。这可能是我的主机的问题吗? - Switchfire
1
这个有效,找到了其他几个处理程序AddHandler x-mapp-php5 .html .htm的版本。 - Switchfire
感谢帮助,我想这是因为这个网站是由1and1托管的,他们是一个非常奇怪的公司,我将接受这个答案来帮助任何遇到类似问题的人!再次感谢 ;) - Switchfire
@Switchfire 我一定会注意这个。 这是要保留的好信息。 我想这取决于服务器的配置。 我以前从未见过x-mapp版本。 - Funk Forty Niner
显示剩余6条评论

4

试试这个:

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

或者

AddHandler x-httpd-php .html .htm

或者

<FilesMatch "\.(htm|html|php)$">
SetHandler application/x-httpd-php
</FilesMatch>

或者

<FilesMatch "\.(htm|html|php)$">
SetHandler application/x-httpd-php5
</FilesMatch>

编辑: 对于1&1服务器:

AddType x-mapp-php5 .html .htm

其中一个应该有效。

@Switchfire 和这个:AddHandler application/x-httpd-php5 .html .htm - Don
你是否具有在 .htaccess 文件中添加处理程序所需的访问权限? - Louis Huppenbauer
是的,我有完全的访问权限,我相信这是由于托管公司的原因,我已经将代码添加到了我的原始帖子中。谢谢。 - Switchfire
@Switchfire 我忘了提到这一点。1&1只能与那个配合使用。 - Don
@Don谢谢,这个=> AddHandler application / x-httpd-php5 .html .htm 对我有用,我在KnownHost使用SuPHP - Alex Angelico

0
长话短说,通过在php-fpm配置文件中编辑/etc/php/8.1/fpm/pool.d/www.conf并添加以下指令,问题得以解决。
security.limit_extensions = .php .html

我在一个基于Unix的操作系统上使用Nginx + php-fpm,当浏览一个.html文件时,我遇到了Access denied.的问题。

我检查了Nginx日志文件,但是日志文件中没有任何标识问题的内容,但是发现问题的原因是以下Nginx位置块:

location ~ \.html$ {
    fastcgi_pass   unix:/var/run/php-fpm.sock;
    ...
}

在 macOS 上,我的 php-fpm 配置文件位于 /usr/local/etc/php/8.1/php-fpm.d/www.conf 在 Debian 操作系统上,配置文件位于 /etc/php/8.1/fpm/pool.d/www.conf 如果这些方法都没有帮助,您可以使用以下方法之一来搜索配置文件。
find -name "php-fpm.conf" -o -name "www.conf"
locate php-fpm.conf

0

你需要知道是否正在使用php-fpm而不是php模块。如果你正在使用php-fpm,则必须执行两个操作:

1)在httpd.conf中添加以下行:

<FilesMatch \.(html)$>
    SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>

2)在php-fpm.d/www.conf中确保您拥有以下行

 security.limit_extensions =

这个方法可行。也许有更好的设置,我不知道。但我知道如果你使用php-fpm,那么所有涉及AddHandler、AddType的答案都不会起作用。


0
您也可以尝试下面的代码。
AddHandler x-httpd-php .html .htm

或者

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接