如何将请求从一个apache模块传输到其他模块?

时间:2016-11-01 02:53:39

标签: apache joomla httprequest apache-modules

我已经构建了一个基于joomla的网站,并使用Apache服务器提供服务。 我现在必须构建一个模块来检查来自URI的请求的合法性,如果URI满足某些约束,Apache然后让它访问正常的Joomla网站,否则返回HTTP_BAD_REQUEST。

例如,如果URI包含<script>,Apache将返回HTTP_BAD_REQUEST。否则,它允许客户端访问joomla网站。那么我该如何编写ELSE部分。

static int my_apache_module_function(request_rec *r)
{
    if (strstr(r->args, "<script>") != NULL)
{
        return HTTP_FORBIDDEN;
}
    else
//direct the client to normal joomla homepage.
//I need your help here. I am really thankful for any clues.
}

1 个答案:

答案 0 :(得分:1)

简单,真的。你使用subreqeust。在伪代码中:

if (r->main != NULL) return AP_DECLINED  // Ignore the subrequests.
sub = ap_sub_req_lookup_uri (r->unparsed_uri, r, NULL);
rc = ap_run_sub_req (sub);
ap_destroy_sub_req (sub);
return rc

诀窍是检查r->main以便不处理您自己的子请求。