2010-07-23 13 views
0

Donc, pour des raisons de sécurité, je veux désavouer http://www.domain.com/directory/ mais permettre ce répertoire physique que par http://subdomain.domain.com/directory/.htaccess: bloquer une URL de répertoire physique, mais permettre à l'URL par un sous-domaine indirectement

La façon simple serait de déplacer seulement la répertoire, mais je ne peux pas le faire car il casse l'application, alors comment je le ferais avec .htaccess?

J'ai temporairement bloqué à l'aide:

RedirectMatch 301 ^/directory/$ http://www.domain.com/ 

Mais bien sûr, qui redirige le sous-répertoire dans les deux cas, alors ce que je pense est que je pouvais mettre:

RedirectMatch 301 ^http://www.domain.com/directory/$ http://www.domain.com/ 

ou quelque chose de similaire mais ça ne marche pas ... des suggestions?

Répondre

0

Vous pouvez le faire avec un RewriteCond:

RewriteEngine on 
RewriteCond %{HTTP_HOST} !subdomain.domain.com 
RewriteRule ^directory http://www.domain.com [R=301] 

Bien mieux encore, je recommande la création d'un autre hôte virtuel avec la même racine du document. Donc, dans votre configuration du serveur principal, vous auriez

<VirtualHost *:80> 
    # this is the existing virtual host for the www subdomain 
    ServerName www.domain.com 
    ... 
    DocumentRoot /path/to/docroot 
    # Add this next section 
    <Directory /path/to/docroot/directory> 
     Options allow,deny 
     Deny from all 
    </Directory> 
</VirtualHost> 
<VirtualHost *:80> 
    # this is the existing vhost for the other subdomain 
    ServerName subdomain.domain.com 
    ... 
    DocumentRoot /path/to/docroot 
</VirtualHost> 

Il est plus efficace quand Apache n'a pas pour analyser les fichiers .htaccess.