确定HTML是否破坏了文件链接请求


Determine if HTML broken file link request

我开发了一个PHP应用程序,在其中我使用apache创建了一个路由系统
使用这个路由系统,每个http请求都指向index.php,除非请求是服务器上的实际文件。

我的问题是,如果文件不存在,每次文件请求传递404错误时,我的整个应用程序都会被执行,导致我的应用程序变得非常慢。

我试着听$_SERVER,看看我是否发现了一些数据,这些数据表明执行是由一个断开的文件链接完成的,如果我发现了什么,我会执行die()函数,这样就不会加载应用程序。

我在$_SERVER上没有发现任何东西,也没有发现以下任何功能:

getallheaders();
headers_list();
headers_sent();
http_response_code();

最初我使用的是下面的脚本,但后来发现,如果有人在请求的末尾放了一个类似somestring.test的字符串,那么整个应用程序就会关闭。

if(FULL_URL !== rtrim(PROTOCOL.'://'.$_SERVER['HTTP_HOST']).'/'){
    // Get path extension
    $ext = pathinfo(FULL_URL, PATHINFO_EXTENSION);
    if($ext !== ''){
        die;
    }
}

我可以做些什么来确定http请求是坏文件请求还是正常请求?

我通过监听函数getallheaders():给出的字段Accept解决了问题

if(FULL_URL !== rtrim(PROTOCOL.'://'.$_SERVER['HTTP_HOST']).'/'){
    // Get path extension
    $ext = pathinfo(FULL_URL, PATHINFO_EXTENSION);
    if($ext !== ''){
        $contenttype = isset(getallheaders()['Accept']) ? getallheaders()['Accept'] : NULL;
        if(empty($contenttype) || strpos($contenttype, 'text/html') === FALSE){
            die;
        }
    }
}