PHP重定向而不影响标头

时间:2012-06-23 05:49:35

标签: php header web http-headers

我正在尝试创建一个PHP脚本,该脚本将始终在每个页面加载时调用,而不会更改网站的现有代码,并且尽可能少的额外配置。

这是我的问题,我不希望它对实际请求(标题)产生任何影响。这是所需的流程:

请求 - > somescript.php - >实际目的地

所以,我不能使用header()函数,解决方案必须完全是服务器端。

我在想,在脚本完成它的任务之后,它可以包含/需要预期的PHP文件。

任何想法/建议都会非常感激。

此致

Branden Martin

PS:我不能在.htaccess文件中使用php_value,因为有时会在CGI环境中使用。

底线:需要一些代码才能在每个服务器请求上运行

2 个答案:

答案 0 :(得分:0)

您希望在任何其他脚本之前执行脚本吗?如果您使用Apache,我可以想到一个可能的解决方案......如果您可以在.htaccess ...

中重写

.htaccess

RewriteEngine On
RewriteBase /test
RewriteRule !(common.php) common.php/$1

common.php

<?php
$request=substr($_SERVER['REQUEST_URI'],6);
if($request==""){
    $request="index.php";
}
if(substr($request,0,1)=="/"){
    // Prevent browsing local files (*nix)
    header("HTTP/1.1 403 Forbidden",true,403);
}else if(!file_exists($request)){
    // Not found
    header("HTTP/1.1 404 Not Found",true,404);
}else{
    // Request URI should be valid
    do_what_you_want_to_do_before_anything_else();
    // Include the original request URI...
    if(substr($request,-4)==".php"){
        include $request;
    }else{
        // Prevent executing non-PHP code
        echo file_get_contents($request);
    }
}
?>

还有很多代码需要编写,包括安全措施,如果子脚本关心,则更改$_SERVER数组。

答案 1 :(得分:0)

如果你可以修改服务器的php.ini,你可以使用auto_prepend_file指令吗?

您需要注意:如果将其直接添加到.ini,则该网络服务器托管的所有网站都处于活动状态。您也可以通过apache或php-fpm中的php_value添加它,以便在每个站点的基础上执行它,或者您可以在脚本中构建站点检测。

就配置的简易性而言,你不能简单得多。