2016-10-14 1 views
0

J'héberge plusieurs sites sur le même serveur Apache (et adresse IP) en utilisant la méthode standard des hôtes virtuels. J'ai donc des dossiers comme les suivants: /var/www/website1.com/, /var/www/website2.com/, et ainsi de suite.Autoriser uniquement le site à être consulté par son domaine

Je sais comment modifier le DocumentRoot pour que les demandes d'un certain domaine pointent vers le répertoire approprié, mais le problème est que le site est également accessible via 123.456.789.000/website1.com/, où 123.456.789.000 est l'adresse IP du serveur.

Ceci est particulièrement mauvais car il est construit en utilisant Laravel, donc le DocumentRoot est actuellement /var/www/website1.com/public, avec le répertoire principal website1.com où Laravel stocke les fichiers de configuration et autres fichiers privés. Il est actuellement possible d'afficher ces fichiers en les visitant à l'adresse IP (heureusement ce n'est pas un projet critique).

Alors, comment puis-je m'assurer qu'un site ne peut être visité qu'à website.com et non 123.456.789.000/website.com/? Je ne veux pas nécessairement que cela s'applique globalement - je veux pouvoir choisir sur un site par site s'il devrait seulement être accessible par son propre nom de domaine.

Répondre

0

Vous devez ajouter une redirection qui envoie des clients à votre « canonique » nom de domaine

RewriteCond %{HTTP_HOST} !^example\.com [NC] 
RewriteRule ^/(.*)   https://example.com/$1 [R=301,L] 

(Je ne sais rien au sujet de « Laravel », mais le stockage des fichiers config/privés dans les répertoires web accessibles sons vraiment mauvais)