使用.htaccess使所有.html页面作为.php文件运行?

2020/11/16 19:22 · php ·  · 0评论

我需要将所有.html文件都作为.php文件运行,而明天明天我们没有时间来更改所有链接。有什么办法可以用我的Apache服务器“破解”吗?

在网站的根目录中创建一个.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 

在My Godaddy服务器中,以下代码有效

Options +ExecCGI
AddType application/x-httpd-php .php .html
AddHandler x-httpd-php5 .php .html

您也可以使用mod_rewrite的H或T标志强制所有.html文件由php处理程序解析:

使用H(Handler)标志:

 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

您还需要另外两件事:

  1. 允许覆写

    your_site.conf文件中(例如/etc/apache2/mods-available在我的情况下),添加以下行:

    <Directory "<path_to_your_html_dir(in my case: /var/www/html)>">
        AllowOverride All
    </Directory>
    
  2. 启用重写模块

    在您的机器上运行以下命令:

    sudo a2enmod rewrite 
    

    完成这些步骤之后,您应该重新启动apache:

    sudo service apache2 restart
    

这是所有其他正确答案的版本:

如果找不到正确的处理程序,只需创建一个包含以下内容的.php文件:

<?php echo $_SERVER['REDIRECT_HANDLER']; ?>

并在浏览器中运行/打开此文件。

从php代码输出,复制此输出

在.htaccess文件中使用此输出

在您网站的根目录(通常是Linux服务器上名为public_html或htdocs的文件夹)的根目录中创建一个.htaccess文件,并添加以下行:

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

对于仍然有麻烦的人,

试试看(我的托管服务来自Godaddy,这是所有答案中唯一对我有用的东西。

AddHandler x-httpd-php5-cgi .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

这里把这个放在你的.htaccess中

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

页面上的更多信息

将.html文件作为php运行时,我的.htaccess文件突然停止工作。

Godaddy的支持让我将其更改为:

AddHandler application/x-httpd-lsphp .html

使用@Marc-François方法Firefox提示我下载html文件

最后,以下内容对我有用(同时使用):

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

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

我正在Raspberry Pi 3中运行PHP7.1。

/etc/apache2/mods-enabled/php7.1.conf我最后添加的文件中

AddType application/x-httpd-php .html .htm .png .jpg .gif

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)没有包含AllowOverride All站点目录的指令该指令导致未处理.htaccess。要解决此问题,请添加:

<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
本文地址:http://php.askforanswer.com/shiyong-htaccessshisuoyou-htmlyemianzuowei-phpwenjianyunxing.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!