是否可以通过直接调用文件URL来使用PHP脚本来处理非PHP文件?

时间:2015-12-19 14:34:01

标签: php webserver

我需要创建一个PHP脚本,它将文件名作为参数,打开该文件并对其进行处理(读取和处理非PHP伪指令)并将结果返回给访问者的浏览器。

示例:

  1. 网站访问者类型http://domain.ext/somefilename.myext和Web服务器打开特定的PHP脚本(例如MyMainScript.php),将完整路径传递给somefilename.myext作为参数。

  2. MyMainScript.php打开文件somefilename.myext,读取其中的内容,处理它并将输出发送回访问者的浏览器

  3. 所以我的问题是如何配置Web服务器(IIS或Apache)来映射文件扩展名为" myext" (* .myext)执行脚本" MyMainScript.php"

    使用其他方式调用它,例如:

    /MyMainScript.php/somefilename.myext
    

    /MyMainScript.php?file=somefilename.myext
    

    不是一个选项

1 个答案:

答案 0 :(得分:0)

在您网站的根目录下创建.htaccess文件。如果您正在运行Apache2 @ Ubuntu / Debian,请使用此指令:

AddType application/x-httpd-php .myext

如果您将PHP作为CGI运行,则应该改为编写:

AddHandler application/x-httpd-php .myext

这会将特定扩展视为PHP文件并将其作为PHP执行。

另一个解决方案可能是RewriteRule,因此您可以指定需要执行的文件,对于Apache,您的.htaccess文件应如下所示:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^somefilename.myext$ ./MyMainScript.php?file=somefilename.myext

# or just for any file ending with .myext
RewriteRule ^(.*).myext$ ./MyMainScript.php?file=$1.myext

这样的事情应该有效。