0
所以我正在努力使自己的apache模块。现在我试图让它返回一个403来测试它,但似乎apache只是完全忽略模块并返回默认页面。这里是我的代码的相关部分:阿帕奇忽略自定义模块
static int request_hook(request_rec* r){
return HTTP_FORBIDDEN;
}
/* ********************************************
Register module to Apache
******************************************** */
static void register_hooks(apr_pool_t *p)
{
// We want to hook first so we can issue a deny ASAP if needed
ap_hook_log_transaction(request_hook, NULL, NULL, APR_HOOK_REALLY_FIRST);
}
module AP_MODULE_DECLARE_DATA my_module = {
STANDARD20_MODULE_STUFF,
NULL, /* dir config creater */
NULL, /* dir merger --- default is to override */
NULL, /* server config */
NULL, /* merge server configs */
NULL, /* command apr_table_t */
register_hooks /* register hooks */
};
我的Apache配置文件看起来是这样的:
<VirtualHost *:80>
DocumentRoot /var/www/html
SetHandler my_module
</VirtualHost>
它是由做
sudo apxs -i -a -c my_module.c && sudo service apache2 restart
你需要告诉Apache来加载在Apache实例级别的模块,而不是网站的水平。根据您的Apache安装情况,您可能会有一个loadmodules.conf文件,其中包含Apache应加载的所有模块。否则,你可以添加到你的HTTPD.conf“LoadModule module_name /path/on/your/disk/to/moduel.so” – falconspy
我在/ etc/apache2/mods启用了my_module.load文件,如果我加载模块手动在虚拟主机配置我看到日志“my_module已经加载”。 –
你的模块应该在403禁止上做什么? 403禁用的东西是Apache核心的一部分,如果我没有弄错,所有你可以做的就是自定义你的403错误页面。 – falconspy