Estou executando o Apache v2.4 no Ubuntu 14.04 e tenho contêineres/diretivas neste formato
<IfModule mpm_prefork_module>
# ...
</IfModule>
No entanto, muitas vezes vejo módulos referenciados na documentação oficial do Apache e em sites stackexchange desta forma:
<IfModule prefork.c>
# ...
</IfModule>
Eu procurei muito, inclusiveaqui-http://httpd.apache.org/docs/2.4/mod/core.html#ifmodulee não consigo descobrir qual é a diferença e quando uma deve ser usada em vez da outra?
Veja o módulo de reescrita, por exemplo
Do apachedocumentação: diretiva ifmodule
O argumento do módulo pode ser o identificador do módulo ou o nome do arquivo do módulo, no momento em que foi compilado.
Por exemplo, rewrite_module é o identificador e mod_rewrite.c é o nome do arquivo.
E é muito comum ver isso em .htaccess
arquivos
<IfModule mod_rewrite.c>
# ....
</IfModule>
Eu grep
editei meu /etc/apache2
diretório e "mod_rewrite.c" não está definido em lugar nenhum.
Na minha máquina o arquivo /etc/apache2/mods-available/rewrite.load
contém:
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
então é mod_rewrite.c
uma referência a um arquivo do Windows/outro? nesse caso, referir-se a ele em uma máquina Linux seria uma sintaxe incorreta?
Responder1
Na página vocêvinculadopara, contém este texto:
O argumento do módulo pode ser o identificador do módulo ou o nome do arquivo do módulo, no momento em que foi compilado. Por exemplo, rewrite_module é o identificador e mod_rewrite.c é o nome do arquivo. Se um módulo consistir em vários arquivos de origem, use o nome do arquivo que contém a string STANDARD20_MODULE_STUFF.
Usando o exemplo fornecido, o módulo de reescrita pode ser referido como 'rewrite_module' (identificador) ou mod_rewrite.c (nome do arquivo). Ambos são equivalentes e não há diferença. Você pode usar qualquer um.
O módulo com o arquivo fonte mod_rewrite.c é compilado em mod_rewrite.so, que é o que você terá em seu sistema de arquivos. Este arquivo fonte possui a linha 'module AP_MODULE_DECLARE_DATA rewrite_module;' nele, que declara um módulo chamado 'rewrite_module'.
O módulo pode ser referido como 'rewrite_module', que é o identificador, ou 'mod_rewrite.c', que é o arquivo fonte do qual foi compilado.
A linha 'LoadModule' diz para carregar o módulo com o identificador 'rewrite_module' do objeto já compilado mod_rewrite.so. Ao configurar isso, você pode consultar o identificador ou o nome do arquivo de origem, se souber.
Responder2
Como @DanielLawson já apontou, isso está claramente descrito na página de manual do Apache que você está vinculando.
O argumento do módulo pode ser o identificador do módulo ou o nome do arquivo do módulo, no momento em que foi compilado.
O nome do arquivo do módulo termina com um.cextensão, já que C é a linguagem em que o Apache httpd é desenvolvido.
Um conceito de identificadores de módulo é, por sua vez, semelhante às tags do Stack Exchange. Seu <IfModule mpm_prefork_module>
bloco diz: se você tiver algum módulo marcado comompm_prefork_module. Isto permite uma melhor flexibilidade na configuração - módulos diferentes que oferecem a mesma funcionalidade, comomod_ssl.cemod_gnutls.cambos têmmódulo_sslidentificador.