如何通过php脚本获取资源?
我正在尝试在web应用程序中执行以下操作:如何通过php脚本获取资源?,php,server-configuration,Php,Server Configuration,我正在尝试在web应用程序中执行以下操作: <img src="static.example.com/image01.jpg?width=300&height=300" /> 在访问.jpg(或我选择的任何文件类型)时,是否可以让我的服务器(我在共享托管环境中使用Apache)运行PHP脚本,而不仅仅是为文件提供服务 我知道PHP脚本必须设置正确的头等等,我只是想知道如何在第一时间运行它 我知道可以这样做: <img src="static.example.com
<img src="static.example.com/image01.jpg?width=300&height=300" />
在访问.jpg(或我选择的任何文件类型)时,是否可以让我的服务器(我在共享托管环境中使用Apache)运行PHP脚本,而不仅仅是为文件提供服务
我知道PHP脚本必须设置正确的头等等,我只是想知道如何在第一时间运行它
我知道可以这样做:
<img src="static.example.com/get_image.php?name=image_01.jpg&width=300&height=300" />
但这不是我想要的方式。你可以使用mod_rewrite,只要你在一个子目录中,或者你的其他static.example.com都会这么做 将类似的内容添加到该子目录中的.htaccess中
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{query_string} ^height=([^&]+)&width=([^&]+)
RewriteRule (.*\.jpg|.*\.png|.*\.gif) controller.php?name=$1&height=%1&width=%2
</IfModule>
应该变成
controller.php?name=test.jpg&height=100&width=120
另一种方法是将ApacheServe.jpg作为该目录的php脚本。 只需查看httpd.conf或php.conf并查找.php。找到该指令,并在.jpg的
中复制它。
我从来没有在单个目录中尝试过这种方法,但最终它会比mod_重写路径更快
比如:
<Files *.jpg>
SetOutputFilter PHP
SetInputFilter PHP
</Files>
AddType application/x-httpd-php .jpg
SetOutputFilter PHP
SetInputFilter PHP
AddType应用程序/x-httpd-php.jpg
您可以使用mod_rewrite,前提是您位于子目录中,或者您的其他static.example.com都将使用mod_rewrite
将类似的内容添加到该子目录中的.htaccess中
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{query_string} ^height=([^&]+)&width=([^&]+)
RewriteRule (.*\.jpg|.*\.png|.*\.gif) controller.php?name=$1&height=%1&width=%2
</IfModule>
应该变成
controller.php?name=test.jpg&height=100&width=120
另一种方法是将ApacheServe.jpg作为该目录的php脚本。 只需查看httpd.conf或php.conf并查找.php。找到该指令,并在.jpg的
中复制它。
我从来没有在单个目录中尝试过这种方法,但最终它会比mod_重写路径更快
比如:
<Files *.jpg>
SetOutputFilter PHP
SetInputFilter PHP
</Files>
AddType application/x-httpd-php .jpg
SetOutputFilter PHP
SetInputFilter PHP
AddType应用程序/x-httpd-php.jpg
我假设可以将.*更改为.*jpg或其他正则表达式以匹配我想要的扩展,对吗?它几乎可以工作,但我认为参数传递不正确。这是我的查询字符串:image01.jpg?height=200&width=300这是我在.htaccess:RewriteEngine中的RewriteRule(.*\.jpg.*.png.*.gif)controller.php?q=$1,但当我打印$_SERVER['query_string']时,它会给出q=image01.jpg(我希望它给出height=200&width=300)。谢谢你的帮助。如果你打印$_GET['q'],会发生什么?我认为这是因为我们指定了?stuff=asdf,我们正在覆盖原始的查询字符串。我修改了上面的代码,用新的参数表示原始参数。希望它能工作。我假设。*可以更改为。*jpg或其他正则表达式以匹配我想要的扩展,对吗?它几乎可以工作,但我认为参数传递不正确。这是我的查询字符串:image01.jpg?height=200&width=300这是我在.htaccess:RewriteEngine中的RewriteRule(.*\.jpg.*.png.*.gif)controller.php?q=$1,但当我打印$_SERVER['query_string']时,它会给出q=image01.jpg(我希望它给出height=200&width=300)。谢谢你的帮助。如果你打印$_GET['q'],会发生什么?我认为这是因为我们指定了?stuff=asdf,我们正在覆盖原始的查询字符串。我修改了上面的代码,用新的参数表示原始参数。希望它能起作用。