2010-09-14 7 views
0

J'héberge un couple de domaines de la même installation wordpress, maintenant j'aimerais avoir un dossier par domaine pour certains fichiers différents que j'ai besoin d'y mettre.Comment cacher des répertoires réels en utilisant mod_rewrite?

Essentiellement, je veux la carte comme ceci:

 
URL      Path 
webbfarbror.se/f/*  _files/webbfarbror.se/* 
grapefrukt.com/f/*  _files/grapefrukt.com/* 

Ce petit extrait fait le travail bien et le RewriteCond me laisse activer et désactiver ce sur une base par domaine.

ReWriteCond %{HTTP_HOST} webbfarbror.se 
ReWriteRule ^f/(.*)$ _files/%{HTTP_HOST}/$1 [L] 

Cependant, un fichier à dire, http://grapefrukt.com/f/awesome.jpg est également accessible à son URL « vrai » http://grapefrukt.com/_files/grapefrukt.com/awesome.jpg

Toutes mes tentatives aboutissent à l'infini et-vient redirections. Comment puis-je désactiver l'accès via cette dernière adresse URL?

Répondre

1

Vous pouvez examiner la demande d'origine telle qu'elle a été envoyée au serveur, disponible sous la forme %{THE_REQUEST}. Vérification du préfixe /_files/ indique que la demande était de ce dernier type, et vous pouvez rediriger vers le format approprié:

RewriteCond %{THE_REQUEST} ^[A-Z]+\s/_files/ 
RewriteRule ^_files/[^/]+/(.*)$ http://%{HTTP_HOST}/f/$1 [R=301,L] 
+0

Ce genre d'œuvres, mais pour une raison quelconque, il ne sera pas sous-dossiers tels que correspondre à: http : //grapefrukt.com/_files/grapefrukt.com/games/ – grapefrukt

+0

@grapefrukt - Hmm, ça a l'air de marcher sur mon serveur de test. Y a-t-il un '.htaccess' avec des directives' mod_rewrite' dans ce répertoire peut-être? –

+0

s'avère que cela fonctionne effectivement, je suppose qu'il y avait une sorte de mise en cache des réécritures en cours sur mon hôte. Merci! – grapefrukt

Questions connexes