2009-11-15 15 views
0

J'ai actuellement un site en ligne sur un domaine. Je voudrais passer à un nouveau site, qui est actuellement dans un sous-répertoire protégé par mot de passe sur ce serveur.Apache: Déploiement d'un nouveau site sur le serveur

J'ai une page "Maintenance du site en cours". Je veux configurer Apache pour qu'il affiche cela par défaut au lieu de "index.php". Aussi, je voudrais que tout le reste sur le serveur soit protégé par mot de passe pendant que je fais le changement (bien que ce ne soit pas essentiel, je suppose).

j'ajouté ceci au fichier .htaccess dans public_html:

DirectoryIndex siteDown.php 

Malheureusement, cela ne fait rien. Je peux naviguer à http://www.example.com/siteDown.php très bien.

Je suis sur une configuration d'hébergement partagé. Cela pourrait-il être un problème?

Répondre

1

Les hôtes partagés ont généralement un panneau de contrôle quelconque qui vous permet d'activer le traitement .htaccess.

Vous devez utiliser des règles mod_rewrite, comme répertoire index ne entrées de processus qui finissent comme

http://www.example.com/

http://www.example.com/this_other_page.html traitera toujours très bien, même si vous avez modifié DirectoryIndex. En outre, vous devriez vraiment servir une erreur 503, car robots d'exploration, caches et autres entités peuvent tenter de mettre en cache cette page en tant qu'être votre site.

+0

comment servir une erreur 503? –

+0

http://php.net/manual/fr/function.header.php (voir dernier argument) – Daniel

0

Certains hôtes partagés n'autorisent pas .htaccess. Vérifiez les TOS de votre hébergement pour voir si elles sont autorisées, ou mettez une "poubelle" (comme "asdasdasd") dans votre .htaccess. Si votre page se charge correctement, le serveur ne les lit pas. Si vous obtenez une erreur de serveur interne (500), elle est activée.

Si vous n'avez pas activé .htaccess, vous pouvez effectuer une redirection en utilisant php. Dans les premières lignes de votre index.php:

header("Location: http://domain.com/siteDown.php"); 
exit(); 

Il est pas la meilleure solution là-bas, mais il fonctionne comme prévu. Et si la structure de votre site Web est toujours basée sur des chaînes de requête index.php (comme index.php?page=home), cela fonctionne dans toutes les pages.

0

Pourquoi avez-vous quelque chose à ajouter pas la tête de votre page index.php comme:

if($site_down == TRUE) 
{ 
    print "My site is down"; 
} 

stocker ensuite votre variable dans le meilleur endroit pour votre situation, comme une base de données ou d'un fichier plat. Si vous placez ce drapeau dans votre base de données, vous pouvez même configurer des éléments tels que la maintenance planifiée et les messages utiles à afficher. Cela fonctionnera sur n'importe quel compte hébergé avec MySQL et PHP et est génial quand vous avez besoin de fermer. Vous n'avez pas à déplacer de fichiers.

Ce qui suit est très rude pseudocode donc ne pas copier et coller, mais cela vous montrera l'idée:

$sql = "SELECT * FROM site_maintenance WHERE down_start >= NOW() AND down_end <= NOW() ORDER BY down_start ASC, down_end ASC LIMIT 1;"; 
// GET YOUR RESULT SET 
if(COUNT($result) == 1) 
{ 
    print "Site Down: {$row->reason}"; 
    exit; 
}