2010-06-28 4 views
3

Existe-t-il un moyen de créer une règle de réécriture dans un fichier situé dans un chemin différent de DocumentRoot? Dites que j'ai domaine http://test.ldt/ avec DocumentRoot /home/test_ltd/ et je veux que lorsqu'un fichier est demandé sous statique. sous-domaine (http://stats.test.ldt/) il chercherait le fichier demandé d'un autre chemin, disons/home/static_files/Règle de réécriture de httpd avec un répertoire DocumentRoot différent

On m'a conseillé d'utiliser mod_alias. Cependant, je ne suis pas sûr de savoir comment le faire fonctionner quand j'en ai besoin avec un sous-domaine.

à cristis:

Vous n'avez pas raison. Par exemple, si ceux-ci seraient des règles httpd mines:

ServerName domain.ltd 
ServerAlias www.domain.ltd 

DocumentRoot /home/domain_ltd 

RewriteEngine on 

RewriteCond %{HTTP_HOST} static2.domain.ltd 
RewriteRule (.*)$ /home/static_files/$1 [L] 

DirectoryIndex index.html index.htm index.php 

et le client demanderait pour static2.domain.ltd/foo.txt, le fichier sera recherché dans/home/domain_ltd/home/static_files/1

$
+0

Avez-vous accès à 'httpd.conf', ou êtes-vous limité à l'utilisation des fichiers' .htaccess'? –

+0

J'ai accès à httpd.conf – Gajus

Répondre

1

Pour moi, ce serait le plus logique de définir simplement le sous-domaine comme VirtualHost qui a un DocumentRoot qui pointe où vous le vouliez (bien que nous CRDI change en territoire ServerFault ici sur le plan technique, je suppose ...)

par exemple:

<VirtualHost *:80> 
    ServerName static.domain.tld 

    DocumentRoot /home/static_files/ 

    <Directory /home/static_files> 
     Options Indexes FollowSymLinks Includes 
     AllowOverride All 
     Order allow,deny 
     Allow from all 
    </Directory> 
</VirtualHost> 

Mais vous COU Ld le faire avec une combinaison de mod_alias et mod_rewrite aussi, si vous le vouliez. Quelque chose comme ça devrait travail ...

En httpd.conf:

Alias /static /home/static_files 

En .htaccess (ou de préférence dans httpd.conf dans la section Directory pour /home/domain_tld):

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^static 
RewriteRule ^!static - [C] 
RewriteRule ^(.*)$ static/$1 [PT] 
+0

Cela n'a pas fonctionné pour moi. Hm. Cela semble être bien pour moi. Peut-être que le RR devrait être/statique/mais tout le reste devrait être bon. Je ne sais pas, ne fonctionne pas. – Gajus

+0

Sans les règles de réécriture, si vous allez au sous-domaine, vous pouvez accéder au contenu de '/ home/domain_tld' sans problème, non? En outre, que disent les journaux de votre serveur à propos de la demande que vous avez faite pour tester l'échec? –

1

Vous pouvez inclure le chemin d'accès complet dans l'instruction RewriteRule. Par exemple:

RewriteEngine on 
RewriteRule ^/~(([a-z])[a-z0-9]+)(.*) /home/$2/$1/.www$3 

(prise de http://httpd.apache.org/docs/2.0/misc/rewriteguide.html)

+1

Ne peut être lu dans la section des commentaires; déplacé au poste original sous "à cristis:" – Gajus

Questions connexes