我遇到了需要执行标题中的内容 - 检查是否有404错误和媒体请求(基本上是jpg,png,gif,bmp,mp3,pdf等等) - 将请求重定向到另一台服务器。
原因是Web应用程序是易受攻击的开源软件,我目前无法修复上传相关问题,因此阻止所有上传通过php.ini(file_uploads = off)。我将应用程序复制到另一个受htpwd保护的服务器,该服务器只允许访问上述媒体类型没有密码。
我没有设法正确调整要检查的代码 - 如果404错误(因此它尚未在服务器上)+媒体请求(扩展名以上),请转到XXX.XXX.XXX.XXX/$1。
非常感谢您的帮助。
答案 0 :(得分:1)
根据您的具体需求,我编写了一个简单的功能。它可能对你有帮助。检查并在必要时进行必要的调整:
功能:
<?php
function checkMedia($request) {
$info = pathinfo($request);
$extension = @$info['extension'];
$valid_formats = array("pdf", "png", "jpeg"); // add all media extensions you want to check against
foreach($valid_formats AS $format) {
if($format == $extension) {
$headers = @get_headers($request);
if($headers[0] == 'HTTP/1.1 404 Not Found') {
return true;
}
}
}
}
?>
然后使用这样的函数来检查请求类型和文件是否存在:
<?php
$request = "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png";
$media = checkMedia($request);
if($media) {
// it is a media request and file does not exist
// header("Location: somepath.php");
} else {
// it is not a media request or the file exists on server
}
?>
解释:我使用了PHP的三个内置函数来编写这个新函数。
pathinfo()
:我已使用此功能从请求网址中提取扩展信息(如果有)get_headers()
: This function向我们提供了目标服务器向我们发送请求的HTTP response信息。我已经用它来检查它是否为我们的请求发送了HTTP/1.1 404 Not Found
标题。header()
函数重定向到其他地方(如果它是媒体请求且该文件不存在。)答案 1 :(得分:0)
您需要重新安装快速Web服务器的新副本;你必须改变它,它需要几个小时来弄明白。
备份您当前的设置。重新安装和apache并尝试再次imho。