具有不同文件扩展名的 PHP 的 AddHandler

dot*_*ter 2 linux php .htaccess apache2

我正在尝试配置一个托管的 Apache 服务器,通过.htaccess,执行.asp带有 PHP 扩展名的文件。但我不知道正确handler-nameAddHandler是什么。

原因是我们有一个 GET 请求.asp文件的 Flash 应用程序。我们将.asp用 PHP重写文件,但我们无法更改 Flash 应用程序(我们甚至没有源代码)。

我曾尝试使用AddHandlerAddType指令。

AddHandler php-fcgid .php .asp
AddType application/x-httpd-php .asp
AddHandler application/x-httpd-php7 .asp
Run Code Online (Sandbox Code Playgroud)

我试图无济于事的指令示例

大多数都没有指定输入文件。或将 mime-type 设置application/x-httpd-php为 for .phpfiles(技术上设置Content-TypeHTTP 标头)。

现在,我完全理解AddHandler并且AddType- 我找到的最好的资源是https://www.webmasterworld.com/apache/4557229.htm#msg4557505

主机有一个看起来像是用于管理服务器的自定义仪表板。我可以将 PHP 版本从 5.4 更改为 7.0 并更改php.ini.

我上传了一个phpinfo();我认为相关的一些值在下面发布。Apache 版本未知,因为它只是报告Server: Apache. 但我确定它至少是 Apache2,因为Apache 2.0 处理程序列在 SAPI 模块下。

我怎样才能弄清楚什么是正确handler-nameAddHandler

PHP 版本 7.0.9

Server API  CGI/FastCGI
Configuration File (php.ini) Path   /compile/php70/dest/lib
Loaded Configuration File   /etc/custom_php_config/slavespillet.dk/php.ini
Scan this dir for additional .ini files     (none)
Additional .ini files parsed    (none)
PHP API     20151012
Run Code Online (Sandbox Code Playgroud)

cgi-fcgi

Directive   Local Value Master Value
cgi.check_shebang_line  1   1
cgi.discard_path    0   0
cgi.fix_pathinfo    1   1
cgi.force_redirect  1   1
cgi.nph 0   0
cgi.redirect_status_env no value    no value
cgi.rfc2616_headers 0   0
fastcgi.logging 1   1
Run Code Online (Sandbox Code Playgroud)

PHP Version     7.0.9
$_SERVER['SERVER_SOFTWARE'] Apache
Run Code Online (Sandbox Code Playgroud)

MrW*_*ite 6

解决方法/替代方法是简单地将.asp请求重写.php为普通.php文件并将文件存储为普通文件 - 假设.php文件正确提供。使用 mod_rewrite 您可以在根.htaccess文件中执行以下操作:

RewriteEngine On
RewriteRule ^(.+)\.asp$ $1.php [L]
Run Code Online (Sandbox Code Playgroud)

这将在内部重写/path/to/something.aspto的请求/path/to/something.php