bonjour tout le monde,
J'aimerais savoir quel est le principe utiliser pour mettre un site en maintenance. Comment empecher l'acces a toutes les pages ?
Si vous avez la reponse ca m'interresse Smiley smile
Bonjour,

Tout dépend de la gestion du site en question et de la technologie utilisée. Smiley cligne

Plusieurs moyen de procéder : test de l'existence d'un fichier destiné à indiquer que le site est temporairement indisponible, fichier de paramètres avec test de la valeur d'un paramètre particulier ... Smiley smile

<edit>Le principe reste à chaque fois le même. Smiley cligne </edit>
Modifié par yodaswii (30 Apr 2008 - 17:27)
On peut aussi faire une redirection HTTP temporaire. Avec un serveur Apache, dans un fichier .htaccess:

RedirectMatch temp ^.* /maintenance.html
(Faudrait vérifier l'expression régulière, j'ai un doute là...)
Modifié par Florent V. (30 Apr 2008 - 21:01)
Ah ouii ca doit etre ca .. Je n'avais vraiment pas le courage de mettre un test en php au debut de chacune de mes pages ..
Merciiii pour votre aide
a écrit :
Je n'avais vraiment pas le courage de mettre un test en php au debut de chacune de mes pages ...


Il ne s'agissait pas de cela ... avec une utilisation réfléchie d'include et/ou require un seul test suffit. Smiley cligne

<edit>La solution de Florent V. (passer par le htaccess) est une (très bonne) solution pour s'affranchir d'effectuer ce test depuis le code php. Smiley cligne </edit>
Modifié par yodaswii (01 May 2008 - 15:08)
Oui j'avais compris Maitre yoda, un test ou un include, meme combat. la force, je n'ai pas .. modifier chaque fichier pour y inclure cette ligne est un combat qu'il me faut abandonner ..
Il fut un temps, j'avais trouvé cette solution aussi :

.htaccess dans le dossier racine

ErrorDocument 403 /temp/maintenance.php
deny from all
order deny, allow


.htaccess dans le dossier temp :

allow from all
order allow, deny


et dans /temp/maintenance.php :

<?php
header("HTTP/1.x 503 Temporary undisponible");
header("Status:503 Temporary undisponible");
...


le .htaccess dans le dossier temp est indispensable sinon on obtient une erreur 403 (ou 500 ou 501 parfois, ça dépend des config) mais en tout cas ça interdirait aussi maintenance.php.

En début de code php, il est important d'indiquer explicitement un code de retour HTTP (sinon on reçoit un 403 ce qui n'est pas forcément voulu). Ici j'envoie le code 503 que je trouve meilleur que le code 200 comme s'il n'y avait rien de spécial. Question de goût...
bonjour, j'ai pas très bien compris le fonctionnement.
Moi aussi je veux indiquer que le site est temporairement en maintenance et condamner l'accès à toutes les pages.
La solution la plus facile c'est rediriger le site mais ça concerne que la page d'accueil ( la racine ).
Bonjour lemister,

Pour commencer, sais-tu si ton site est hébergé sur un serveur qui tourne avec Apache? Si oui, tu peux utiliser un fichier nommé ".htaccess" à la racine de ton site pour donner quelques instructions au serveur. Je te laisse faire une recherche sur cette question si ça n'est pas clair pour toi (Apache, .htaccess, etc.).

Maintenant, pour l'instruction à utiliser: j'en suggère une plus haut, il me semble qu'elle marche bien. Elle devrait rediriger toutes les requêtes vers une adresse précise. Une correction toutefois: il me semble qu'il faut rediriger vers une URL complète, donc ce serait plutôt:
RedirectMatch temp ^.*  http://www.monnomdedomaine.com/maintenance.html

Pour en savoir plus, tu peux faire une recherche sur la directive RedirectMatch d'Apache.
Florent V. a écrit :
Bonjour lemister,

Pour commencer, sais-tu si ton site est hébergé sur un serveur qui tourne avec Apache? Si oui, tu peux utiliser un fichier nommé ".htaccess" à la racine de ton site pour donner quelques instructions au serveur. Je te laisse faire une recherche sur cette question si ça n'est pas clair pour toi (Apache, .htaccess, etc.).

Maintenant, pour l'instruction à utiliser: j'en suggère une plus haut, il me semble qu'elle marche bien. Elle devrait rediriger toutes les requêtes vers une adresse précise. Une correction toutefois: il me semble qu'il faut rediriger vers une URL complète, donc ce serait plutôt:
RedirectMatch temp ^.*  http://www.monnomdedomaine.com/maintenance.html

Pour en savoir plus, tu peux faire une recherche sur la directive RedirectMatch d'Apache.



merci beaucoup d'avoir répondu.

Pour commencer je suis hébergé chez 1&1 , peut être que vous pouvez me dire si ils utilisent les serveurs dit "Apache".
Et si je créé une page " * http://www.monnomdedomaine.com/maintenance.html " à partir d'où et comment j'active la maintenance ?
lemister a écrit :
Pour commencer je suis hébergé chez 1&1 , peut être que vous pouvez me dire si ils utilisent les serveurs dit "Apache".

Pour leurs hébergements mutualisés sous Linux (la plupart des hébergements grand public qu'ils proposent), oui.

lemister a écrit :
à partir d'où et comment j'active la maintenance ?

Via le fichier .htaccess dont on a parlé à plusieurs reprises. Si tu places ce fichier dans le dossier qui correspond à la racine de ton domaine, le serveur (Apache) va le lire avant de répondre aux requêtes (une requête = un visiteur qui demande l'affichage d'une page ou le téléchargement d'un fichier telle qu'une image). Si ce fichier contient des instructions pour rediriger toutes les requêtes vers une page précise, qui informe que le site est en maintenance, alors c'est bon.
QuentinC a écrit :
Il fut un temps, j'avais trouvé cette solution aussi :

.htaccess dans le dossier racine

ErrorDocument 403 /temp/maintenance.php
deny from all
order deny, allow


.htaccess dans le dossier temp :

allow from all
order allow, deny


et dans /temp/maintenance.php :

<?php
header("HTTP/1.x 503 Temporary undisponible");
header("Status:503 Temporary undisponible");
...



il faut que je procède comme ca?
lemister a écrit :
il faut que je procède comme ca?

Il s'agit d'une solution alternative proposée par Quentin. Tu peux éventuellement procéder ainsi. Mais les explications que je te donne depuis tout à l'heure ne concernent pas cette solution...
Pour ma solution, il est absolument indispensable que la page de maintenance soit dans un sous-dossier et pas à la racine. Sinon, ce que je propose est inappliquable (il faudrait à la fois autoriser et interdire le même dossier, ce qui est contradictoire et impossible).
QuentinC a écrit :
Pour ma solution, il est absolument indispensable que la page de maintenance soit dans un sous-dossier et pas à la racine. Sinon, ce que je propose est inappliquable (il faudrait à la fois autoriser et interdire le même dossier, ce qui est contradictoire et impossible).


euh..... donc que dois-je faire ? je suis un peu ( beaucoup ) perdu ! Smiley sweatdrop