2011-08-01 5 views
3

Je suis en train d'utiliser le même 404 ErrorDocument pour un domaine et tous ses sous-domaines, Les sous-domaines ont tous leur propre répertoire dans le répertoire/var/www/pathApache ErrorDocument chemin absolu

la directive ErrorDocument Apache attend un chemin relatif (par rapport au répertoire courant), mais je veux qu'il aller à /var/www/ErrorPages/404.html de tous les répertoires/sous-domaines

il y a une question similaire posée here en 2010, mais il n'a pas Eleborate sur la solution, j'ai essayé Alias ​​et je ne pouvais pas l'obtenir pour faire ce que je veux.

Exemple 1: fichier http://example.com/doesnotexist.txt demandé

-> montrer /var/www/mervin/ErrorDocuments/404.html comme réponse

Exemple 2: fichier http://subdomain.example.com/otherimaginaryfile.txt demandé

-> Afficher /var/www/ErrorPages/404.html comme réponse

Virtualhost:

<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> 

Comment ferais-je cela?

Autres infos: Apache2.2, travail mod_alias, travail mod_rewrite, les liens symboliques ont permis

Répondre

8

je configurer une configuration de test sur un de mes boîtes de dev - la principale chose je remarque manque de la vôtre est une déclaration d'annuaire pour votre docs d'erreur !!

Cela fonctionne pour ma configuration:

<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> 

Obtenez votre Alias ​​/ stuff ErrorDocs travailler pour votre domaine principal, s'il y a encore des problèmes avec les alias, nous pouvons travailler sur ce [que j'ai un sentiment qu'une fois que vous ajoutez le répertoire - tout va tomber en place! ;)]

-Sean

+0

Votre exemple ne semble pas fonctionner le journal apache donne juste un error_docs n'existe pas d'erreur. Il y a un seul Vhost pour lequel j'ai besoin de ceci, il a 2 sous-domaines qui réécrivent directement dans les répertoires sous/var/www/ – Mervin

+0

Je veux que les domaines/sous-domaines soient dans 1 directive, J'ai ajouté ma définition à mon poster. – Mervin

+0

J'ai édité toute ma réponse pour éviter toute confusion avec des choses qui ne fonctionneront pas. S'il vous plaît relire. –