programing

옵션 지시문에 의해 디렉터리 인덱스가 금지됨

javamemo 2023. 9. 12. 19:47
반응형

옵션 지시문에 의해 디렉터리 인덱스가 금지됨

codeigniter: http://codeigniter.com/wiki/PDF_generation_using_dompdf/ 에 dompdf 플러그인을 사용하고 있습니다.

양식에서 pdfs를 생성합니다.이것은 localhost에서는 작동하지만 실시간 서버에서는 오류 로그에 표시됩니다.

Directory index forbidden by Options directive: /var/www/vhosts/domain.co.uk/httpdocs/mm/userdata/account1/invoices/

이게 무슨 뜻인지 알아요?답변을 검색해보니 httpd.conf 편집을 제안하는 몇 가지를 찾았지만 접근할 수 없습니다.

루트 및 문서 디렉토리에 빈 인덱스.html 파일을 추가해 보았습니다(다른 곳에서도 제안했지만 소용이 없었습니다).

어떤 도움이라도 주신다면 대단히 감사하겠습니다.

감사합니다!

httpd.conf.htaccess이 또는 에는 다음과 같은 파일이될 수 .

Options -Indexes

호스트가 다음으로 설정해야 할 수도 있습니다.+Indexes접속할 수 없는 경우에는.htaccess내용을. 는을고다를리다a를dt고o이ett,st는 .index.html, index.php수 , 에 할 이 할 에 이 Indexes안에 으로 삼을 수 . 에 의 만 할 으로 할 으로 에 .

Indexes옵션은 많은 Apache 설치에서 기본적으로 실행 중지됩니다.

자세한 내용은 의 Apache 코어 설명서에서 확인할 수 있습니다.

이는 해당 디렉토리에 기본 문서(index.html, index.php 등)가 없음을 의미합니다.대부분의 웹 서버에서는 디렉토리의 내용 목록을 표시합니다. 서버할 수 (서버 구성에서 디렉토리를 표시할 수 없음).Options -Indexes)

더 프로블럼

index.html 또는 index.php 파일을 포함하지 않는 디렉터리에 대해 웹 브라우저에 표시되는 인덱스.

Scientific Linux의 httpd 웹 서버에서 이러한 인덱스를 표시하는 것을 중지하는 구성에 많은 문제가 있었습니다.

작동하지 않은 구성

httpd.conf 가상 호스트 디렉토리 지시어:

<Directory /home/mydomain.com/htdocs>
    Options FollowSymLinks
    AllowOverride all
    Require all granted
</Directory>

그리고 .htaccess에 다음 행을 추가합니다.

Options -Indexes

디렉터리 인덱스가 여전히 표시되고 있습니다. .htaccess 설정이 작동하지 않습니다!

어떻게 그럴 수 있죠, .htaccess의 다른 설정들이 작동하고 있었는데, 왜 이것은 안 될까요?무슨 일입니까?작동하고 있어야 합니다! %#$&^$%@#!!

더 픽스

httpd.conf의 옵션 행을 다음으로 변경합니다.

Options +FollowSymLinks

웹 서버를 재시작합니다.

아파치의 핵심 모드 페이지에서: ( https://httpd.apache.org/docs/2.4/mod/core.html#options )

+ 또는 -를 사용하지 않는 옵션과 혼합하는 것은 유효한 구문이 아니며 서버 시작 중 구문 검사에서 중단으로 거부됩니다.

voilah 디렉토리 인덱스가 index.html 또는 index.php 파일을 포함하지 않는 디렉토리에 대해 더 이상 표시되지 않습니다.

이제 뭐!새로운 주름

이러한 디렉토리 액세스를 시도할 때 'error_log'에 새 항목이 표시되기 시작했습니다.

[Fri Aug 19 02:57:39.922872 2016] [autoindex:error] [pid 12479] [client aaa.bbb.ccc.ddd:xxxxx] AH01276: Cannot serve directory /home/mydomain.com/htdocs/dir-without-index-file/: No matching DirectoryIndex (index.html,index.php) found, and server-generated directory index forbidden by Options directive

이 항목은 Apache 모듈 'autoindex'에서 가져온 것으로, 오류 메시지의 [autoindex:error]([module_name:loglevel])에 표시된 'error'의 LogLevel입니다.

이러한 새 항목이 기록되지 않도록 하려면 LogLevel을 상위 레벨(예: 'crit')로 변경하여 보다 적은 수의 심각한 오류 메시지만 기록해야 합니다.

Apache 2.4 로그 레벨

LogLevel은 Apache 2.4의 핵심 지침을 참조하십시오.

emerging, alert, crit, error, warnotice, info, debug, trace1, trace2, trace3, tracr4, trace5, trace6, trace7, trace8

목록에 있는 각 단계는 이전 단계의 모든 메시지를 기록합니다.

Apache 2.4의 기본 레벨은 'warn'입니다.따라서 emerging, alert, crit, error, warn으로 분류된 모든 메시지는 error_log에 기록됩니다.

새 오류_로그 항목 중지를 위한 추가 수정

<디렉토리> 안에 다음 줄을 추가했습니다.httpd.conf의 </Directory> 섹션:

LogLevel crit

해결책 1

가상 호스트의 httpd.conf <Directory>...</Directory> 구성:

<Directory /home/mydomain.com/htdocs>
    Options +FollowSymLinks
    AllowOverride all
    Require all granted
    LogLevel crit
</Directory>

그리고 웹사이트의 .htaccess 파일의 루트 디렉토리인 /home/mydomain.com/htdocs/ .htaccess에 추가합니다.

Options -Indexes

'error' 수준의 메시지도 괜찮으시다면 생략합니다.

LogLevel crit

Scientific Linux - 솔루션 2 - mod_autoindex 사용 안 함

웹 공간 내의 디렉토리를 자동 색인화할 필요가 없습니다..htaccess에 변경사항이 없습니다.그러나 /etc/httpd의 httpd 구성 파일에 액세스해야 합니다.

  1. /etc/httpd/conf.modules.d/00-base.conf를 편집하고 다음 행을 주석으로 달습니다.

    LoadModule autoindex_module modules/mod_autoindex.so
    

    파일 앞에 #를 추가한 다음 파일을 저장합니다.

  2. /etc/httpd/conf.d rename 디렉토리에서 (mv)

    sudo mv autoindex.conf autoindex.conf.<something_else>
    
  3. httpd 다시 시작:

    sudo httpd -k restart
    

    아니면

    sudo apachectl restart
    

이제 autoindex_mod가 비활성화되었습니다.

ap2dismod/ap2enmod 명령어를 사용한 Linux distros

자동 인덱스 모듈 사용 안 함 명령 입력

    sudo a2dismod autoindex

자동 인덱스 모듈 입력을 활성화하려면 다음과 같이 하십시오.

    sudo a2enmod autoindex

RHEL을 실행할 때 발생할 수 있는 또 다른 문제는 옵션 인덱스를 넣더라도 설정을 재정의하는 httpd 패키지로 구성된 기본 시작 페이지가 있다는 것입니다.파일이 /etc/httpd/conf.d/welcome.conf에 있습니다.자세한 정보는 다음 링크를 참조하십시오. http://wpapi.com/solved-issue-directory-index-forbidden-by-options-directive/

다음 행을 삽입합니다.

<Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs">
        Options  +Indexes
</Directory>

당신의C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\extra\httpd-vhosts.conf파일. 가상 호스트를 개발에 사용하고 있다고 가정합니다.

그리고 아파치를 다시 시작해보세요.

문서화

같은 오류가 발생했습니다. 문제는 제 코드의 MySql 문에 있는 구문 오류에서 비롯되었습니다. 특히 $_session 변수에 ""가 누락되었습니다.오류 로그에 있는 설명이 오해를 불러일으키기 때문에 그것을 알아내는 데 몇 시간이 걸렸습니다.누군가에게 도움이 되길 바랍니다.

이것을 conf.d에 추가하면 이 문제가 해결되었습니다.

Options +Indexes +FollowSymLinks

제 경우에는 오타로 인해 이 문제가 발생했습니다.

<VirtualHost *.8080>

그래야 한다

<VirtualHost *:8080>

성능 튜닝을 해왔다면 mod_dir를 제거했을 수도 있습니다.원래대로 되돌리면 문제가 해결될 수 있습니다.

언급URL : https://stackoverflow.com/questions/5301776/directory-index-forbidden-by-options-directive

반응형