web-dev-qa-db-fra.com

Puis-je vérifier le mode maintenance avant de rediriger vers un sous-domaine?

Je travaille actuellement sur un site qui comportera plusieurs sous-domaines nécessitant une redirection basée sur le pays d'origine mais le module mod_geoip n'est pas autorisé sur le serveur. Je ne peux donc pas utiliser une redirection .htaccess, telle que:

GeoIPEnable On
GeoIPDBFile /path/to/GeoIP.dat

# Canada
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA$
RewriteRule ^(.*)$ http://ca.abcd.com$1 [L]

J'ai fait des recherches et trouvé que Cloudflare permet GEOlocation et que je peux utiliser (exemple de code):

$country_Origin = strtolower($_SERVER['HTTP_CF_IPCOUNTRY']);
in a switch like (code is an example, hasn't been tested):

$country_Origin = strtolower( $_SERVER[ "HTTP_CF_IPCOUNTRY" ] );
$clean_url = preg_replace("(^https?://)", "",  get_site_url() );
if ( !empty( $country_Origin ) && $country_Origin != 'us' ) {
  switch( $country_Origin ) {
    case 'et';
        header( 'Location: http://' . $country_Origin . '.' . $clean_url );
        break;          
    case 'us';
        header( 'Location: http://' . $country_Origin . '.' . $clean_url );
        break;
    case 'ca';
        header( 'Location: http://' . $country_Origin . '.' . $clean_url );
        break;
  }
}

Étant donné que chaque sous-domaine aurait sa propre installation WordPress car le contenu serait réécrit et géré séparément, comment puis-je vérifier si le site est activé en mode maintenance pour arrêter/empêcher la redirection?

2

Chaque fois que WordPress insère un blog en mode maintenance, il crée un fichier à la racine de votre répertoire d'installation.

le fichier contient une chaîne liée au plugin/theme/core en cours de mise à jour. Son nom est .maintenance (il n'a pas de nom, seulement une extension).

Le fichier y reste jusqu'à la fin du processus. Vous pouvez donc vérifier si le fichier existe en procédant comme suit:

if( file_exists(ABSPATH .'/.maintenance') ) { 
    // Stop redirection here
}

Quel serait ce que vous cherchez.

1
Jack Johansson