dot*_*ter 2 linux php .htaccess apache2
我正在尝试配置一个托管的 Apache 服务器,通过.htaccess,执行.asp带有 PHP 扩展名的文件。但我不知道正确handler-name的AddHandler是什么。
原因是我们有一个 GET 请求.asp文件的 Flash 应用程序。我们将.asp用 PHP重写文件,但我们无法更改 Flash 应用程序(我们甚至没有源代码)。
我曾尝试使用AddHandler和AddType指令。
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-name的AddHandler?
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)
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)
解决方法/替代方法是简单地将.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。