使用.htaccess使所有.html页面以.php文件的形式运行?

Mic*_*llo 50 html php apache .htaccess

我需要将所有.html文件作为.php文件运行,我没有时间在明天演示之前更改所有链接.有没有办法用我的Apache服务器"破解"这个?

Mar*_*ois 62

在您网站的根目录下创建一个.htaccess文件并添加以下行:

[Apache2 @ Ubuntu/Debian:使用此指令]

AddType application/x-httpd-php .html .htm
Run Code Online (Sandbox Code Playgroud)

或者,通过以下评论:

AddType application/x-httpd-php5 .html .htm
Run Code Online (Sandbox Code Playgroud)

如果你正在运行PHP作为CGI(可能不是这种情况),你应该写:

AddHandler application/x-httpd-php .html .htm 
Run Code Online (Sandbox Code Playgroud)

  • 这对我不起作用.它使Firefox想要下载html文件并显示它. (17认同)
  • 我必须在类型的末尾添加`5`才能工作,即`AddType application/x-httpd-php5 .html .htm`(运行PHP 5.3的CentOS) (8认同)
  • 它导致文件正在下载 (4认同)
  • @LeeBlake 我遇到了同样的问题。这有什么好运气吗? (2认同)

小智 10

在My Godaddy Server中,以下代码有效

Options +ExecCGI
AddType application/x-httpd-php .php .html
AddHandler x-httpd-php5 .php .html
Run Code Online (Sandbox Code Playgroud)

  • 我想提到"Godaddy"会让你失去第一个位置. (10认同)

sta*_*een 6

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

使用H(Handler)标志:

 RewriteEngine on

RewriteRule \.(html|htm)$ - [H=application/x-httpd-php5]
Run Code Online (Sandbox Code Playgroud)

使用T(Type)标志:

 RewriteEngine on

RewriteRule \.(html|htm)$ - [T=application/x-httpd-php5]
Run Code Online (Sandbox Code Playgroud)

或者你也可以添加更多的扩展,通过管道seprated规则模式| 你希望被php处理程序解析

例如:

RewriteRule \.(html|htm|txt|foo)$ - [T=application/x-httpd-php5]
Run Code Online (Sandbox Code Playgroud)

上面的示例将以.html,.htm,.txt,.foo结尾的文件的mime类型更改为php.

注意:在某些服务器上,您必须将php5更改为php以使此示例在处理程序字符串中起作用:

更改

[T=application/x-httpd-php5]
Run Code Online (Sandbox Code Playgroud)

[T=application/x-httpd-php]
Run Code Online (Sandbox Code Playgroud)


th3*_*at3 6

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

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

<?php echo $_SERVER['REDIRECT_HANDLER']; ?>
Run Code Online (Sandbox Code Playgroud)

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

php代码的输出,复制这个输出

在 .htaccess 文件中使用此输出

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

AddType [[THE OUTPUT FROM ABOVE FILE]] .html .htm
Run Code Online (Sandbox Code Playgroud)

例子

AddType application/x-httpd-php70 .html .htm
Run Code Online (Sandbox Code Playgroud)

重要的提示:

如果您看到空白页或 Notice: Undefined index: REDIRECT_HANDLER

尝试默认 .htaccess

AddHandler application/x-httpd-php .html
Run Code Online (Sandbox Code Playgroud)

  • 有没有办法以另一种方式确定这个处理程序?因为 $_SERVER['REDIRECT_HANDLER'] 在我的例子中返回 null :( (2认同)

ili*_*ght 5

对于那里仍然有麻烦的人,

尝试这个(我的托管来自Godaddy,这是我在所有答案中唯一有用的东西.

AddHandler x-httpd-php5-cgi .html
Run Code Online (Sandbox Code Playgroud)


Dor*_*rad 5

您需要将以下行添加到Apache配置文件中:

AddType application/x-httpd-php .htm .html
Run Code Online (Sandbox Code Playgroud)

你还需要另外两件事:

  1. 允许覆盖

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

    <Directory "<path_to_your_html_dir(in my case: /var/www/html)>">
        AllowOverride All
    </Directory>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 启用重写Mod

    在您的机器上运行此命令:

    sudo a2enmod rewrite 
    
    Run Code Online (Sandbox Code Playgroud)

    执行任何这些步骤后,您应该重新启动apache:

    sudo service apache2 restart
    
    Run Code Online (Sandbox Code Playgroud)


小智 5

运行 .html 文件,因为 php 在我的 .htaccess 文件中突然停止工作。

Godaddy 支持让我将其更改为:

AddHandler application/x-httpd-lsphp .html
Run Code Online (Sandbox Code Playgroud)

  • 这取决于您的托管提供商是否使用 LSAPI (LiteSpeed) 版本的 PHP 处理程序,那么您必须使用 `application/x-httpd-lsphp` 而不是 `application/x-httpd-php` (2认同)