我是新手编写apache输出过滤器,甚至更多用c编写它们。我已经采用了一个示例过滤器(mod_substitute)源代码,并且只有在请求针对特定主机时才尝试使其工作。我需要将其作为一个编程功能而不是出于我自己原因的配置。
我使用以下代码试试这个:
request_rec *req = f->r;
ngf_module_ctx *ctx = f->ctx;
/* Test to see if this is a domain that needs optimization */
if (req->hostname != "localhost") {
ap_pass_brigade(f->next, bb);
return APR_SUCCESS;
}
使用调试打印我看到req-> hostname值确实显示为localhost,但比较本身失败。
我做错了什么?答案 0 :(得分:1)
您正在使用指针相等运算符(!=
)来比较字符串。这是C,请记住 - 您必须使用strcmp
之类的函数来比较字符串。
如果您之前没有使用过C语言,那么编写Apache模块可能不是一个好的开始。备份并首先熟悉该语言。