web-dev-qa-db-fra.com

Comment créer .htaccess pour bloquer l'accès à un sous-répertoire hébergeant un domaine distinct

J'ai un domaine principal (me.com) et j'héberge des fichiers pour le site Web de ma mère (mom.com) dans un sous-répertoire de mon dossier public_html afin que mom.com utilise les fichiers de me.com/mom.

Tout ce que je veux, c'est faire en sorte que toute personne essayant d'accéder à son site via me.com/mom reçoive une erreur, sans déranger les visiteurs de mom.com.

4
Stan

Edit: Correction d'une erreur!

C'est la théorie:

RewriteEngine on
RewriteCond %{HTTP_Host} mom.com$ [NC]
RewriteRule ^mom/ - [R=404,L]

Sur certaines versions, si ce qui précède ne fonctionne pas, vous pouvez faire cette astuce laide

RewriteEngine on
RewriteCond %{HTTP_Host} mom.com$ [NC]
RewriteRule ^mom/ /someurlthatdoesntexist [L]

Si cela vous convient avec un 403 interdit au lieu d'un fonds 404 non financé, vous pouvez utiliser l'option F.

RewriteEngine on
RewriteCond %{HTTP_Host} mom.com$ [NC]
RewriteRule ^mom/ - [F,L]

Cependant, il y a encore une chose à considérer. Les fichiers .htaccess sont analysés à partir du premier niveau. Par conséquent, si mom.com contient des fichiers .htaccess, ils sont prioritaires. Vous pouvez alors ajouter les éléments suivants aux fichiers .htaccess in mom.com. Cela devrait être en haut des fichiers (juste après RewriteEngine On).

RewriteEngine on
RewriteCond %{HTTP_Host} !mom.com$ [NC]
RewriteRule . - [R=404,L]

Notez le ! ajouté, ce qui signifie une correspondance si le domaine est pas mom.com. Notez également le . qui signifie "attraper tout".

Remplacez - [R=404,L] par l'un des autres modèles, si nécessaire.

3
nitro2k01

Les solutions de Stan et nitro2k01 n'ont pas fonctionné pour moi.

Ce qui suit a fonctionné pour moi:

# Place this .htacces file in /mom subdirectory
RewriteEngine On
RewriteCond %{HTTP_Host} ^www\.mom\.nl$ [NC]
RewriteRule ^(.*)$ - [L,R=404]

Dans le dossier public.www, j’ai utilisé les éléments suivants pour le faire fonctionner:

RewriteEngine On
RewriteCond %{HTTP_Host} ^www\.mom\.nl$ [NC]
RewriteRule .? mom/%{REQUEST_URI} [L,QSA] 

J'espère que cela pourrait aider les autres.

1
Joël Meijering

Vous pouvez utiliser cette règle dans votre .htaccess:

RewriteEngine on
RewriteCond %{HTTP_Host} ^(www\.)?me\.com [NC]
RewriteRule ^mom/.*$ /some-error-page.html [L,R]
1
ritu

Merci pour votre contribution. Je me suis basé sur votre aide pour que cela fonctionne, mais d'une manière légèrement différente: j'ai trouvé cet article sur BlueHost (mon hôte) qui avait le code correct pour le faire fonctionner:

Le code que j'ai utilisé était:

_Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteCond %{HTTP_Host} ^(www.)?me.com$ [NC]
RewriteCond %{REQUEST_URI} ^/mom/(.*)$
RewriteRule ^(.*)$ - [L,R=404]
_

Je pense que le _REQUEST_URI_ était ce qui manquait.

Cela fonctionne dans les fichiers .htaccess du sous-répertoire _public_html_ ou _/mom/_.

1
Stan