쉬운 프로젝트 관리를 위해 내 미디어 파일을 코드에서 분할하는 설정을 아파치에서 만들고 싶습니다. 내가 작성한 아이디어는 모든 코드 (PHP 파일, CSS 파일 등)와 미디어 디렉토리 (/ home/villermen/httpd/media)가 들어있는 루트 디렉토리 (/ home/villermen/httpd/root) 모든 비 텍스트 파일.아파치에있는 여러 루트 디렉토리의 파일 제공
이 설정을 실행하는 것은 까다로운 작업입니다. 존재하는 경우 mod_rewrite를 사용하여 미디어 디렉토리의 파일을 제공하려고 시도하고 있지만 지금까지 성공하지 못했습니다. 나는에있어,
DocumentRoot /home/villermen/httpd/root
RewriteEngine on
<Directory /home/villermen/httpd/root>
Order allow,deny
Allow from all
AllowOverride All
#...other magic magoo, including rewriterules that do work
</Directory>
<Directory /home/villermen/httpd/media>
Order allow,deny
Allow from allow
AllowOverride All
</Directory>
#Serve from media if file exists there
RewriteCond "/home/villermen/httpd/media%{REQUEST_URI}" -f
RewriteRule "^/?(.*)$" "/home/villermen/httpd/media/$1"
여전히 404을 발생합니다 미디어 폴더에 존재하는 파일에 액세스하려고 : 여기
내가 마법이 일어날 수 있도록 노력하는 내 httpd.conf 파일의 일부 여기 손실. 내가보고 있는게 없니?우분투 14.04에서 아파치 2.4를 사용하고 있습니다.
편집 : RewriteCond를 모두 삭제해도 여전히 마술은 일어나지 않습니다. mod_rewrite는 Directory 태그 외부에서 올바르게 작동해야합니까?
업데이트 : @ kannan-mohan 님의 답변을 아래에서 확인하십시오. 결국 나는 폴더에 웹 루트에서 미디어 폴더를 연결하고 거기에 모든 것을 재 작성의 접근 방식에 들어갑니다 : 나의 이해가 정확한지
DocumentRoot /home/villermen/httpd/root
Alias /media /home/villermen/httpd/media
<Directory /home/villermen/httpd/root>
#Serving files from media if they exists there
RewriteCond "/home/villermen/httpd/media%{REQUEST_URI}" -f
RewriteRule "^(.*)$" "/media/$1"
</Directory>
<Directory /home/villermen/httpd/media>
Order allow,deny
allow from all
AllowOverride All
</Directory>
아니요, 실제로 달성하고자하는 것은 다음과 유사합니다. 'http : // example.com/hello.jpg'은'/ home/villermen/httpd/media/hello.jpg ' 그렇지 않으면 문서 루트에서로드해야합니다. ('/ home/villermen/httpd/root/hello.jpg'). 이 별칭 동작을 허용하지 않으므로 간단한 별칭으로는 충분하지 않습니다. – Villermen
'media' 디렉토리를'DocumentRoot' 안에 둘 수 있습니다. 즉'/ home/villermen/httpd/root/media'로 미디어를 넣으시겠습니까? 왜냐하면'DocumentRoot' 밖의 파일에 대한 규칙을 다시 작성하는 것은 약간 복잡하기 때문입니다. –
그래, 기술적으로 그럴 수 있습니다. 하지만 필자는 포함, 루트 및 미디어 디렉토리를 동일한 수준에서 분리하려고합니다. – Villermen