J'héberge sur mon poste de travail divers projets PHP pour mon environnement de développement personnel au sein de mon équipe de travail. Tous avaient leur VirtualHost associé et fonctionnel, qui me permettait d'accéder via mon navigateur (principalement Firefox) à chaque projet web.
Suite à une corruption de base MySQL, j'ai intégralement désinstallé puis réinstallé Wamp (aucun projet n'avait de base MySQL associée). Depuis, il ne m'est plus possible d'accéder à l'un des VHost : mon navigateur tente d'accéder à un site Web (inexistant par ailleurs) portant le nom du VHost.
OS : Windows 7 64bit Wampserver 64bit 3.1.0 Apache 2.4.27 PHP 5.6.31 MySQL 5.7.19 MariaDB 10.2.8
Wamp est bien démarré (icône verte dans la barre des tâches) et mes 4 autres VHost, plus localhost, sont accessibles. Seul le Vhost "cinq" ne fonctionne plus.
Fichier hosts : 127.0.0.1 localhost un deux trois quatre cinq ::1 localhost un deux trois quatre cinq
Fichier httpd-vhosts.conf : <VirtualHost *:80> ServerName un DocumentRoot "c:/dev/un" <Directory "c:/dev/un"> AllowOverride All Require local </Directory> </VirtualHost> (...) <VirtualHost *:80> ServerName cinq DocumentRoot "c:/dev/cinq" ErrorLog "logs/cinq.log" CustomLog "logs/cinq.log" common <Directory "c:/dev/cinq"> AllowOverride All Require local </Directory> </VirtualHost>
Que ce soit en passant par la page localhost "Vos VirtualHost" ou en entrant directement [cinq] dans la barre du navigateur, celui-ci me renvoie vers [www.cinq.com]. J'ai tenté d'échanger le ServerName de "un" et de "cinq" : j'accédais alors à "un" avec [cinq] mais aller sur [un] me renvoyait sur [www.un.com]. J'ai, de même, échangé leurs Directory et leurs DocumentRoot, sans résultat.
Si je modifie l'attribut "Require" du VirtualHost de "cinq" pour y associer une adresse IP qui n'est pas la mienne, en allant sur [cinq] j'arrive bien sur une page "Permission denied" et un message apparait dans les logs "client denied by server configuration". Si je remplace les sources PHP de mon poste de travail par celles d'un collaborateur qui a le même projet et que je vais sur [cinq], je reçois une erreur PHP m'indiquant une incohérence entre le contenu du cache et le chemin de mon répertoire de travail. Si je vide le cache, mon navigateur me renvoie sur [www.cinq.com]. Si je modifie le VirtualHost pour lui attribuer une adresse IP et un port spécifique, et en ouvrant le port via Listen dans le httpd.conf, le problème ne change pas.
Voyez les docs Apache. - 1 - <Directory doit avoir un slash final - 2 - Vos VirtualHost n'ont pas été créés par Wampserver - 3 - Où est le VirtualHost localhost ? - 4 - Pourquoi désinstaller Wampserver pour un base de données vérolée ? - 5 - Quel est le résultat de Clic-Droit -> Outils -> Afficher les VirtualHost examinés par Apache
Tout d'abord, je vous présente mes excuses pour mon temps de réponse anormalement long alors que vous avez vous-même été très réactif.
1-2-3 - Mes VirtualHost ont bien été créés par Wampserver, mais j'avais manuellement ajouté quelques options à celui ne fonctionnant plus et n'avais pas recopié tout le fichier (en faisant en plus la coquille du "/" manquant pour <Directory) ; suite à vos remarques j'ai supprimé puis recréé via WampServer le Virtualhost KO. Il n'est toujours pas accessible, voici le fichier complet :
# Virtual Hosts # <VirtualHost *:80> ServerName localhost ServerAlias localhost DocumentRoot "${INSTALL_DIR}/www" <Directory "${INSTALL_DIR}/www/"> Options +Indexes +Includes +FollowSymLinks +MultiViews AllowOverride All Require local </Directory> </VirtualHost> <VirtualHost *:80> ServerName un DocumentRoot "c:/dev/un" <Directory "c:/dev/un/"> Options +Indexes +Includes +FollowSymLinks +MultiViews AllowOverride All Require local </Directory> </VirtualHost> <VirtualHost *:80> ServerName deux DocumentRoot "c:/svn/deux" <Directory "c:/svn/deux/"> Options +Indexes +Includes +FollowSymLinks +MultiViews AllowOverride All Require local </Directory> </VirtualHost> <VirtualHost *:80> ServerName trois DocumentRoot "c:/dev/trois" <Directory "c:/dev/trois/"> Options +Indexes +Includes +FollowSymLinks +MultiViews AllowOverride All Require local </Directory> </VirtualHost> <VirtualHost *:80> ServerName quatre DocumentRoot "c:/dev/quatre/www" <Directory "c:/dev/quatre/www/"> Options +Indexes +Includes +FollowSymLinks +MultiViews AllowOverride All Require local </Directory> </VirtualHost> <VirtualHost *:80> ServerName cinq DocumentRoot "c:/dev/cinq" <Directory "c:/dev/cinq/"> Options +Indexes +Includes +FollowSymLinks +MultiViews AllowOverride All Require local </Directory> </VirtualHost>
4 - Il s'agissait d'une base de données que je n'avais pas manipulée et qui dans mon souvenir était une table users de Mysql. Mysql ne démarrait plus et m'affichait des messages d'erreurs concernant cette table en me recommandant de la nettoyer via un utilitaire, mais celui-ci n'est accessible que quand Mysql est démarré. Plutôt que de tenter de réparer une base que je ne connaissais pas, j'ai choisi de réinstaller Mysql, et comme les contraintes d'accès internet de mon projet sont assez fortes je n'ai pu récupérer d'installeur. J'ai donc réinstallé tout Wampserver.
5 - VirtualHost configuration:
Default server: localhost Virtual Host: localhost Virtual Host: un Virtual Host: deux Virtual Host: trois Virtual Host: quatre Virtual Host: cinq
Avez-vous vidé le cache du navigateur ? Et peut-être aussi l'historique. Les Redirections ne sont pas effectuées par Wampserver mais plutôt par les navigateurs et les caches.
J'ai nettoyé Firefox et IE. Sous Firefox, la redirection est toujours faite. Toutefois, sous Internet Explorer, il n'y a pas de redirection, juste un message "Cette page ne peut pas s'afficher".
Le DocumentRoot et le <Directory> pointent sur le bon dossier (contenant l'index.php). Si je crée un nouveau VirtualHost en indiquant un chemin absolu un cran plus haut et que j'essaye d'y accéder, j'arrive à "Index of /" dans lequel je retrouve les sources du projet. Si je me déplace dans le dossier web, j'ai à nouveau le message "Cette page ne peut pas s'afficher" à partir d'IE, et "La connexion a été réinitialisée" à partir de Firefox.
L'index.php est le même que celui de mes collègues et ne cause pas de problèmes chez eux...
Fichier. htaccess à la racine, anti-virus, pare-feu.
Vous pouvez aussi essayer de créer un VirtualHost sur le même dossier, mais avec un ServerName différent, sans oublier de redémarrer les DNS pour que ce soit pris en compte par Apache et Windows. On peut très bien avoir plusieurs VirtualHost de noms différents pour le même site local.
# we check if the .html version is here (caching) RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f
# no, so we redirect to our front web controller RewriteRule ^(.*)$ index.php [QSA,L] </IfModule>
L'antivirus et le pare-feu sont coupés pour mes tests.
Comme indiqué dans mon premier message, j'ai déjà essayé d'interchanger le ServerName de deux de mes VirtualHost : le vhost fonctionnel avec le nom du vhost KO restait accessible, et le vhost KO avec le nom du vhost fonctionnel restait inaccessible.