web-dev-qa-db-fra.com

Apache Virtual Host différent en fonction de l'adresse IP du client?

Ce que j'essaie d'accomplir est:

1. A person, with IP 192.168.1.5 loads my webserver (192.168.1.2) and reaches htdocs/
2. Another person, with ip 192.168.1.6 does the same request, and reaches htdocs/folder/

Si possible, j'aimerais que le port 80 soit utilisé uniquement.

J'utilise actuellement la configuration:

<LocationMatch "/">
    Order deny,allow
    Deny from all
    Allow from ::1 127.0.0.0/8 localhost 192.168.1.5
    ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
</LocationMatch>  

<VirtualHost 192.168.1.2:80>
    ServerAdmin frederik@*.dk
    DocumentRoot "/XAMPP/htdocs/"
    ServerName 192.168.1.2
    ErrorLog "logs/lan-error.log"
    CustomLog "logs/lan-access.log" combined
</VirtualHost>

J'aimerais permettre à tous les autres de voir le dossier. Et puis, en fonction de l’IP du client, définissez un autre DocumentRoot.

5
Frederik Spang

Je ne pense pas que vous puissiez le faire de la manière que vous envisagez (avec DocumentRoot conditionnel _). Cependant, vous pouvez obtenir le même résultat avec Apache Rewrites en ajoutant les éléments suivants à votre déclaration VirutalHost ou dans le fichier .htaccess situé dans la racine de votre document:

RewriteEngine On 
RewriteCond %{REMOTE_Host} !^192\.168\.1\.5
RewriteCond %{REQUEST_URI} !^/blog/?
RewriteCond %{REQUEST_URI} /(.*)$
RewriteRule (.*) /blog [R=301,L]

Essentiellement, si l'adresse IP de l'utilisateur n'est pas votre adresse IP et que celui-ci ne demande rien dans le dossier /blog, il sera redirigé vers le dossier /blog. S'il s'agit de votre adresse IP ou s'ils demandent quelque chose dans le dossier /blog, aucune redirection n'aura lieu.

1
nathangiesbrecht