Comment redirect les requêtes vers des fichiers spécifiques au-dessus de la racine du site?

Je démarre un nouveau site Web et j’ai des difficultés à appliquer mon organisation de fichiers / dossiers souhaitée:

Par souci d’argument, disons que mon site sera hébergé sur: http://mywebsite.com/

Je voudrais (avoir configuré) l’hôte virtuel d’Apache pour mapper http://mywebsite.com/ au dossier / fileserver / mywebsite_com / www.

Le problème se pose lorsque j’ai décidé de mettre quelques fichiers (favicon.ico et robots.txt) dans un dossier AU-DESSUS de / www que Apache installe http://mywebsite.com/ dans

robots.txt+favicon.ico go into => /fileserver/files/mywebsite_com/stuff 

Donc, quand les gens vont sur http://mywebsite.com/robots.txt , Apache leur servira le fichier de /fileserver/mywebsite_com/stuff/robots.txt

J’ai essayé de configurer une redirection via mod_rewrite, mais hélas:

 RewriteRule ^(robots\.txt|favicon\.ico)$ ../stuff/$1 [L] 

ne m’a pas fait du bien, parce qu’au fond je disais à Apache de servir quelque chose qui est au-dessus de la racine montée.

Est-il possible d’obtenir les fonctionnalités souhaitées en configurant différemment les hôtes virtuels d’Apache (2.2.9) ou en définissant un RewriteMap qui réécrirait les URL en question non pas dans d’autres URL, mais dans les chemins de fichiers système? Dans la négative, quelle serait la ligne de conduite préconisée pour l’organisation souhaitée (le cas échéant)?

Je sais que je peux accéder aux fichiers mentionnés précédemment via PHP, puis les diffuser – disons avec readfile (..), mais je voudrais que Apache fasse autant de travail que nécessaire – cela sera forcément plus rapide que de faire des E / S. à travers PHP.

Merci beaucoup, cela m’a privé d’heures de travail constructif. Sans parler du mauvais Apache redémarré toutes les quelques minutes. Pensez au pauvre Apache 🙂

Il semble que vous soyez défini sur RewriteRule. Cependant, je vous suggère d’utiliser un alias:

 Alias /robots.txt /fileserver/files/mywebsite_com/stuff/robots.txt 

De plus, vous devrez indiquer à Apache les ressortingctions de ce fichier. Si vous avez plusieurs fichiers traités de cette façon, faites-le pour le répertoire complet:

  Order allow,deny Allow from all  

Pouvez-vous utiliser des liens symboliques?

 ln -s /fileserver/files/mywebsite_com/stuff/robots.txt /fileserver/files/mywebsite_com/stuff/favicon.ico /fileserver/mywebsite_com/www/ 

( ln est comme cp , mais crée des liens symboliques au lieu de copies avec -s .)