저는 Apache 관리에 관한 완전한 초보자이므로, 뭔가 잘못 표현한 경우 양해해 주시기 바랍니다.
나는 웹사이트를 가지고 있습니다 http://domain.com
. 예를 들어, . 문제는 웹 브라우저에서 열려고 하면 http://domain.com/index.html
페이지가 표시되지만 액세스를 시도하면 http://domain.com/Index.html
(대문자 I 참고) HTTP 404로 응답한다는 것입니다.
대소문자를 구분하지 않고 이러한 파일(및 디렉터리)을 모두 제공하도록 Apache를 어떻게 구성합니까? 현재 httpd.conf
는여기.
편집하다 댄 C, 힌트 주셔서 감사합니다. 나는 기본적으로 사용자가 내 서버에서 파일을 다운로드할 수 있도록 허용하고 싶지만 실제로 Index.html
는 index.html
다르다는 사실을 인식하기를 원하지 않습니다 .
나는 또한 이 결정이 어떤 결과를 가져올지 알고 싶습니다.
답변1
가장 먼저 떠오르는 것은mod_rewrite, 이는 이미 구성에 로드되어 있습니다.
파일이 모두 소문자라고 가정합니다(위험한 가정일 수 있음).
RewriteEngine On
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule ^(.*)$ ${tolower:$1}
답변2
Linux 서버에서 Apache를 실행하는 경우 문제는 기본 Linux 대소문자 구분 파일 시스템을 사용한다는 것입니다. Matt가 언급한 대로 ReWrite를 볼 수 있습니다.
또 다른 옵션은 언급된 Apache용 mod_speling 모듈입니다(예, 하나의 L입니다).여기< 하지만 내 생각에는 철자 오류가 하나만 검색되고 한 디렉터리에 파일이 많으면 액세스 속도가 느려질 수도 있습니다.
도움이 되었기를 바랍니다
답변3
실제로 httpd.conf에서는 작동하지 않습니다. 말했듯이 문제는 현재 사용 중인 Linux 파일 시스템이 대소문자를 구분한다는 것입니다.
나는 확실히 작동하는 한 가지 방법을 알고 있습니다. 웹 응용 프로그램을 /opt/www/yourapplication에 넣으십시오.
그런 다음 localhost에 대해서만 /opt/www의 SMB 공유를 만듭니다.
그런 다음 Samba 공유를 /var/www에 마운트합니다.
Samba는 Windows 공유용이고 Windows 공유는 대소문자를 구분하지 않으므로 Samba가 대소문자 구분을 처리하여 내부적으로 모든 것을 LOWERCASE로 만듭니다.