Apache 链接到 PHP 运行应用程序/x-httpd-php *

Apache 链接到 PHP 运行应用程序/x-httpd-php *

例如:我创建了一个指向 PHP 脚本的链接文件文件.php <?php echo 'exaple'; ?>.当我打开文件网上我得到的PHP脚本没有例子如果我打开文件.php我明白了例子

我已经尝试过.htaccess有效。我创建了 file.html <?php echo 'exaple'; ?>。并且.htaccess

<IfModule mod_rewrite.c>
   AddType application/x-httpd-php .html
</IfModule>

当我打开文件.html我明白了例子

我尝试过同样的方法来获得文件在职的:

   AddType application/x-httpd-php
   AddType application/x-httpd-php *
   AddType application/x-httpd-php file
   AddType application/x-httpd-php ^ (.*)$
   AddType application/x-httpd-php ^ (.*)
   AddType application/x-httpd-php ^ (.)
   AddType application/x-httpd-php ^.

没有成功。我怎样才能让它运行?

答案1

你是找错了对象AddType

听起来您正在尝试实现无扩展名的 URL。

只需启用 MultiViews 即可实现此目的。例如:

Options +MultiViews

现在,当你请求时,如果存在,/file它将提供服务/file.php(或)。就像“魔术”一样。/file.html

参考:https://httpd.apache.org/docs/2.4/content-negotiation.html

或者,使用 mod_rewrite 内部重写 URL。例如:

Options +FollowSymLinks -MultiViews

RewriteEngine On

# Internally rewrite "/file" to "/file.php"
RewriteRule ^file$ file.php [L]

上述代码只是将具体的请求 URL 重写/file/file.php。它不会先检查是否/file.php存在,因此在这方面它是无条件的。

但是,具体如何实现这一点将取决于您的文件结构以及可能存在的指令。更一般地,要使用 mod_rewrite 重写对无扩展名文件的任何请求,您可以将上述内容更改RewriteRule为以下内容:

# Internally rewrite "/<something>" to "/<something>.php"
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.\w{2,4}$ %{REQUEST_URI}.php [L]

上述内容将重写任何没有文件扩展名且没有通过附加扩展名映射到物理目录的请求.php

参考:https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

但是,MultiViews 和 mod_rewrite 不一定能很好地协同工作,因此如果您使用 mod_rewrite,则应该禁用 MultiViews

相关内容