Ubuntu 14.04에서 Apache v2.4를 실행 중이며 이 형식의 컨테이너/지시문이 있습니다.
<IfModule mpm_prefork_module>
# ...
</IfModule>
그러나 나는 종종 Apache 공식 문서와 스택 교환 사이트에서 다음과 같이 참조되는 모듈을 봅니다.
<IfModule prefork.c>
# ...
</IfModule>
포함하여 많이 검색했습니다.여기-http://httpd.apache.org/docs/2.4/mod/core.html#ifmodule차이점이 무엇인지, 언제 다른 것보다 사용해야 하는지 알 수 없나요?
다시 쓰기 모듈을 예로 들어 보겠습니다.
아파치에서문서: ifmodule 지시문
모듈 인수는 컴파일 당시 모듈 식별자 또는 모듈의 파일 이름일 수 있습니다.
예를 들어 rewrite_module은 식별자이고 mod_rewrite.c는 파일 이름입니다.
.htaccess
그리고 이것을 파일 에서 보는 것은 매우 흔한 일입니다
<IfModule mod_rewrite.c>
# ....
</IfModule>
grep
내 디렉토리를 편집했는데 " /etc/apache2
mod_rewrite.c"가 어디에도 정의되어 있지 않습니다.
내 컴퓨터의 파일에는 다음이 /etc/apache2/mods-available/rewrite.load
포함되어 있습니다.
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
그럼 mod_rewrite.c
Windows/기타 파일에 대한 참조인가요? 어떤 경우 Linux 시스템에서 이를 참조하는 것이 잘못된 구문이 될까요?
답변1
페이지에서 당신은연결됨에 다음 텍스트가 포함되어 있습니다.
모듈 인수는 컴파일 당시 모듈 식별자 또는 모듈의 파일 이름일 수 있습니다. 예를 들어 rewrite_module은 식별자이고 mod_rewrite.c는 파일 이름입니다. 모듈이 여러 소스 파일로 구성된 경우 STANDARD20_MODULE_STUFF 문자열이 포함된 파일 이름을 사용하십시오.
제공된 예를 사용하면 다시 쓰기 모듈은 'rewrite_module'(식별자) 또는 mod_rewrite.c(파일 이름)로 참조될 수 있습니다. 둘 다 동일하며 차이가 없습니다. 둘 중 하나를 사용할 수 있습니다.
소스 파일 mod_rewrite.c가 있는 모듈은 파일 시스템에 있는 mod_rewrite.so로 컴파일됩니다. 이 소스 파일에는 'module AP_MODULE_DECLARE_DATA rewrite_module;' 줄이 있습니다. 여기에는 'rewrite_module'이라는 모듈이 선언되어 있습니다.
모듈은 식별자인 'rewrite_module' 또는 컴파일된 소스 파일인 'mod_rewrite.c'로 참조될 수 있습니다.
'LoadModule' 라인은 이미 컴파일된 객체 mod_rewrite.so에서 식별자 'rewrite_module'을 사용하여 모듈을 로드하도록 지시합니다. 이를 구성할 때 식별자나 소스 파일 이름을 알고 있는 경우 이를 참조할 수 있습니다.
답변2
@DanielLawson이 이미 지적했듯이 이는 연결하려는 Apache 매뉴얼 페이지에 명확하게 설명되어 있습니다.
모듈 인수는 컴파일 당시 모듈 식별자 또는 모듈의 파일 이름일 수 있습니다.
모듈의 파일 이름은 다음으로 끝납니다..씨확장자는 C가 Apache httpd가 개발된 언어이기 때문입니다.
모듈 식별자의 개념은 Stack Exchange의 태그와 유사합니다. 귀하의 <IfModule mpm_prefork_module>
블록은 다음과 같이 태그가 지정된 모듈이 있는 경우 다음과 같이 읽습니다.mpm_prefork_module. 이를 통해 구성의 유연성이 향상됩니다(예: 동일한 기능을 제공하는 다양한 모듈).mod_ssl.c그리고mod_gnutls.c둘 다 가지고 있다SSL_모듈식별자.