2009-06-29 6 views
3

je ce fichier .htaccess où j'empêcher les utilisateurs d'accéder physiquement les fichiers à partir du navigateur (où ils ne doivent être chargés par le système)Comment puis-je refuser tous les noms de répertoires sauf un avec .htaccess?

Options -Indexes 
Order deny,allow 
deny from all 

J'ai un problème si, parfois je charger des fichiers via AJAX et là, je reçois 403 Interdit. J'ai peu d'expérience avec mod_access d'apache. J'ai lu sur le directory directive depuis tous mes fichiers basés sur AJAX sont dans un répertoire appelé ajax.

Mais la chose est que je dois refuser l'accès à tous les répertoires à l'exception de ceux appelés ajax et mes compétences regex font défaut.

Un exemple de structure de répertoire est semblable à ceci.

plugins/inventory/ajax 
plugins/inventory/controller 
plugins/inventory/view 

plugins/packages/ajax 
plugins/packages/controller 
plugins/packages/view 

Le fichier .htaccess se trouve dans le répertoire plugins.

Répondre

3

Le fait que vous ayez à faire cela en premier lieu est une sorte d'échec de l'architecture du projet. Les fichiers de script qui ne devraient jamais être accessibles sur le Web ne devraient pas être dans votre DocumentRoot en premier lieu.

Cela dit, cela fonctionnera probablement:

RewriteEngine on 
<DirectoryMatch "/(?!.*/ajax$)"> 
    Order deny,allow 
    Deny from all 
</DirectoryMatch> 
+0

Merci pour le conseil à ce sujet, la raison est que les gens écrivent des plugins qui sont automatiquement chargés dans le système et devraient être en mesure de tomber dans un emplacement. –

+0

Hmm, intéressant. Alors, quoi, ils doivent être dans le DocumentRoot parce qu'ils publient via HTTP PUT ou quelque chose? – chaos

+0

Je comprends votre point et il pourrait être possible que nous puissions implémenter les plugins d'une manière différente. Ce ne sont que des répertoires dans le système que les développeurs peuvent utiliser pour programmer des addons pour le système. –

Questions connexes