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