提问人:Michael Novello 提问时间:1/14/2011 更新时间:2/2/2023 访问量:147900
使用 .htaccess 使所有 .html 页面作为 .php 文件运行?
Using .htaccess to make all .html pages to run as .php files?
问:
我需要将所有 .html 文件作为 .php 文件运行,并且在明天的演示之前我没有时间更改所有链接。有没有办法用我的 Apache 服务器“破解”它?
答:
这里把它放在你的.htaccess中
AddType application/x-httpd-php .php .htm .html
更多信息请见本页
在网站的根目录下创建一个 .htaccess 文件,并添加以下行:
[Apache2 @ Ubuntu/Debian:使用此指令]
AddType application/x-httpd-php .html .htm
或者,从下面的评论中:
AddType application/x-httpd-php5 .html .htm
如果你把PHP作为CGI运行(可能不是这样),你应该写:
AddHandler application/x-httpd-php .html .htm
评论
5
AddType application/x-httpd-php5 .html .htm
对于仍然有麻烦的人,
试试这个(我的主机来自 Godaddy,这是所有答案中唯一对我有用的东西。
AddHandler x-httpd-php5-cgi .html
在My Godaddy Server中,以下代码有效
Options +ExecCGI
AddType application/x-httpd-php .php .html
AddHandler x-httpd-php5 .php .html
评论
我认为这是在 html 和 htm 页面上运行 php 脚本的最佳方式:
AddType application/x-httpd-php5 .html .htm
通常,您应该添加:
Options +ExecCGI
AddType application/x-httpd-php .php .html
AddHandler x-httpd-php5 .php .html
但是,对于GoDaddy共享主机(php-cgi),您还需要添加以下行:
AddHandler fcgid-script .html
FCGIWrapper /usr/local/cpanel/cgi-sys/php5 .html
来源:在 Godaddy 上使用 HTACCESS 文件将 HTML 解析为 PHP。
评论
使用@Marc-François方法,Firefox提示我下载html文件
最后,以下内容对我有用(同时使用):
AddType application/x-httpd-php .htm .html
AddHandler x-httpd-php .htm .html
您也可以使用 mod_rewrite 的 H 或 T 标志来强制所有.html文件被 php 处理程序解析:
使用 H(处理程序)标志:
RewriteEngine on
RewriteRule \.(html|htm)$ - [H=application/x-httpd-php5]
使用 T (Type) 标志:
RewriteEngine on
RewriteRule \.(html|htm)$ - [T=application/x-httpd-php5]
或者,您可以向要由 php 处理程序解析的管道 | 分隔的规则模式添加更多扩展
前任:
RewriteRule \.(html|htm|txt|foo)$ - [T=application/x-httpd-php5]
上面的示例将以 .html 、 .htm 、 .txt 、 .foo 结尾的文件的 MIME 类型更改为 PHP。
注意:在某些服务器上,您必须将 php5 更改为 php 才能使此示例在处理程序字符串中工作:
改变它
[T=application/x-httpd-php5]
自
[T=application/x-httpd-php]
您需要将以下行添加到 Apache 配置文件中:
AddType application/x-httpd-php .htm .html
您还需要另外两样东西:
允许覆盖
在文件中(例如,在我的情况下),添加以下行:
your_site.conf
/etc/apache2/mods-available
<Directory "<path_to_your_html_dir(in my case: /var/www/html)>"> AllowOverride All </Directory>
启用重写模组
在计算机上运行以下命令:
sudo a2enmod rewrite
完成上述任何步骤后,您应重新启动 apache:
sudo service apache2 restart
AddHandler application/x-httpd-php .php .html .htm
// or
AddType application/x-httpd-php .php .htm .html
这是所有其他正确答案的版本:
如果找不到正确的处理程序,只需创建一个包含以下内容的 .php 文件:
<?php echo $_SERVER['REDIRECT_HANDLER']; ?>
并在浏览器中运行/打开此文件。
在 .htaccess 文件中使用此输出
在网站的根目录下创建一个 .htaccess 文件(通常是在 Linux 服务器上名为 public_html 或 htdocs 的文件夹)并添加以下行:
AddType [[THE OUTPUT FROM ABOVE FILE]] .html .htm
例
AddType application/x-httpd-php70 .html .htm
重要提示:
如果您看到空白页或Notice: Undefined index: REDIRECT_HANDLER
在以下位置尝试默认.htaccess
AddHandler application/x-httpd-php .html
评论
我正在使用在我的 Raspberry Pi 3 中运行的 PHP7.1。
在我最后添加的文件中:/etc/apache2/mods-enabled/php7.1.conf
AddType application/x-httpd-php .html .htm .png .jpg .gif
将 .html 文件作为 php 运行突然停止在我的 .htaccess 文件中工作。
Godaddy支持让我将其更改为:
AddHandler application/x-httpd-lsphp .html
评论
application/x-httpd-lsphp
application/x-httpd-php
在 Dreamhost 服务器上,您可以参考此页面,在撰写本文时,该页面表明您可以将以下内容用于带有 FastCGI 的 php 7.2:
AddHandler fcgid-script .html
FcgidWrapper "/dh/cgi-system/php72.cgi" .html
或者,如果您使用的是 php5 cgi(不是 FastCGI):
AddHandler php5-cgi .html
这里发布的答案都不适合我。
就我而言,问题是,一方面,.conf文件(/etc/apache2/sites-available/default-ssl.conf或/etc/apache2/sites-available/000-default.conf)不包含站点目录的指令,这导致.htaccess未被处理。要解决此问题,请添加:AllowOverride All
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
另一方面,问题是 .htaccess 是由 root 用户创建的,因此 apache 用户无法读取它。因此,更改文件所有者肯定解决了问题:
chown www-data:www-data .htaccess
首先,阅读以下内容:https://httpd.apache.org/docs/current/howto/htaccess.html#when
然后在这里阅读我的帖子: https://stackoverflow.com/a/59868481/10664600
sudo vim /etc/httpd/conf/httpd.conf
评论
有时它不起作用,如果你只是将.htaccess文件添加到目录中。就我而言,我还更改了 apache2 配置中的一个条目。
sudo nano /etc/apache2/apache2.conf
...
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
修改:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
之后,您只需要重新启动 apache2-service:
sudo systemctl restart apache2
这对我有用。
这将对任何人有所帮助,
RewriteEngine on
RewriteRule ^(.+)\.html$ $1.php [L]
谢谢@FlamberHansen。
如果你在 Plesk 上运行 PHP 作为 Apache 提供的 FPM 应用程序,这篇文章对我有用:
转到“域”> example.com >“PHP 设置”,并将以下行添加到“其他配置指令”字段中:
[php-fpm-pool-settings]
security.limit_extensions = .php .phar .html .inc
.ht访问
<Files ~ .(?i:inc|html|htm)$>
SetHandler proxy:unix:///var/www/vhosts/system/EXAMPLE.com/php-fpm.sock|fcgi://127.0.0.1:9000
</Files>
评论
sed