2011-08-01 5 views
3

I 도메인에 대해 동일한 404에서 ErrorDocument를 사용하기 위해 노력하고있어 및 모든 하위 도메인, 하위 도메인 모두아파치 ErrorDocument를 절대 경로

아파치 작성한 ErrorDocument 지시어는 기대를/var/www /에서 경로에 자신의 디렉토리가 (현재 디렉토리를 기준으로) 상대 경로하지만 난 모든 디렉토리/하위 도메인

에서 /var/www/ErrorPages/404.html로 이동 에 원하는 2010 년 물어 비슷한 질문 here이 있지만 그렇지 않습니다 해결책에 eleborate, 나는 별칭을 시도하고 내가 원하는 것을 할 수 없습니다.

요청 http://subdomain.example.com/otherimaginaryfile.txt 파일 - 응답으로서 /var/www/ErrorPages/404.html 표시>

가상 호스트를 :

- :

예 1> 표시 /var/www/mervin/ErrorDocuments/404.html 같은 응답

예 2 파일 http://example.com/doesnotexist.txt

요청
<VirtualHost *:80> 
ServerName www.mervinkoops.net 
ServerAlias mervinkoops.net *.mervinkoops.net spirecoder.com www.spirecoder.com *.spirecoder.com 
DocumentRoot /var/www/mervin 
ErrorDocument 404 /ErrorDocuments/404.html 
Redirect 404 /favicon.ico 
RewriteEngine On 
RewriteCond %{HTTP_HOST} public\.mervinkoops\.net [NC] 
RewriteRule ^(.*)$ /public/$1 [L] 
RewriteCond %{HTTP_HOST} pma\.mervinkoops\.net [NC] 
RewriteRule ^(.*)$ /PHPMyAdmin/$1 [L] 
RewriteCond %{HTTP_HOST} www\.mervinkoops\.net [NC] 
RewriteRule ^(.*)$ /website/$1 [L] 
RewriteCond %{HTTP_HOST} mervinkoops\.net [NC] 
RewriteRule ^(.*)$ /website/$1 [L] 
RewriteCond %{HTTP_HOST} www\.spirecoder\.com [NC] 
RewriteRule ^(.*)$ /website/$1 [L] 
RewriteCond %{HTTP_HOST} spirecoder\.com [NC] 
RewriteRule ^(.*)$ /website/$1 [L] 
<Directory /var/www/mervin/> 
allow from all 
Options -Indexes 
RewriteBase/
</Directory> 
</VirtualHost> 

어떻게하면됩니까?

기타 정보 : mod_alias가 작동 Apache2.2, mod_rewrite를 가공, 기호 링크

답변

8

내가 설정 내 dev에 상자 중 하나에 테스트 구성 가능 - 나는 당신에없는주의 사항 중요한 것은위한 디렉토리 선언 당신의 오류 문서!

이 내 설치 작동

:

<VirtualHost *:80> 

     ServerName stackexchange.nexus.local 
     ServerAlias serverfault.nexus.local 

     DocumentRoot /Data/vhome/stackexchange.nexus.local/httpdocs 

     HostnameLookups Off 
     UseCanonicalName Off 
     ServerSignature On 

     ErrorLog /var/log/apache2/error_log 
     CustomLog /var/log/apache2/access_log combined 


     Alias "/ErrorPages" "/Data/vhome/stackexchange.nexus.local/ErrorPages/" 
     ErrorDocument 400 /ErrorPages/bad_request.html 
     ErrorDocument 401 /ErrorPages/bad_request.html 
     ErrorDocument 403 /ErrorPages/bad_request.html 
     ErrorDocument 404 /ErrorPages/bad_request.html 


     <Directory /Data/vhome/stackexchange.nexus.local/httpdocs/> 
       AllowOverride All 
       Options +ExecCGI -Includes 
       Order allow,deny 
       Allow from all 
       RewriteBase/
     </Directory> 


     <Directory /Data/vhome/stackexchange.nexus.local/ErrorPages/> 
       AllowOverride All 
       Options +ExecCGI -Includes 
       Order allow,deny 
       Allow from all 
     </Directory> 

     #RewriteEngine On 
     #RewriteCond %{HTTP_HOST} public\.mervinkoops\.net [NC] 
     #RewriteRule ^(.*)$ /public/$1 [L] 
     #RewriteCond %{HTTP_HOST} pma\.mervinkoops\.net [NC] 
     #RewriteRule ^(.*)$ /PHPMyAdmin/$1 [L] 
     #RewriteCond %{HTTP_HOST} www\.mervinkoops\.net [NC] 
     #RewriteRule ^(.*)$ /website/$1 [L] 
     #RewriteCond %{HTTP_HOST} mervinkoops\.net [NC] 
     #RewriteRule ^(.*)$ /website/$1 [L] 
     #RewriteCond %{HTTP_HOST} www\.spirecoder\.com [NC] 
     #RewriteRule ^(.*)$ /website/$1 [L] 
     #RewriteCond %{HTTP_HOST} spirecoder\.com [NC] 
     #RewriteRule ^(.*)$ /website/$1 [L] 


</VirtualHost> 

받기 당신의 별칭/ErrorDocs 물건, 기본 도메인에 대한 작업 별칭에 문제가 여전히 존재하는 경우 나는 느낌이 있지만 다음, 우리는 [그 작업을 할 수 일단 디렉토리를 추가하면 모든 것이 제자리에 들어갑니다! ;)]

-sean

+0

예를 들어 아파치 로그가 작동하지 않는 것 같습니다. error_docs에는 존재하지 않는 오류가 있습니다./var/www/ – Mervin

+0

도메인/하위 도메인을 1 지시문에 넣고 싶습니다. 내 정의를 내 도메인에 추가했습니다. 게시하다. – Mervin

+0

작동하지 않을 물건과의 혼동을 피하기 위해 내 대답 전체를 편집했습니다. 다시 읽으십시오. –