Base de connaissances : Services > Web

Bonjour,

 Les Aquelia utilisent en frontal un proxy qui protège apache des attaques basiques et gère le SSL/TLS. Si vous désirez rediriger toutes les demandes vers du https voici ce que vous devez utiliser dans vos .htaccess:


<ifModule mod_rewrite.c>
    RewriteEngine On
    # empeche de perturber letsencrypt
    RewriteRule ^.well-known/ - [L,NC]
    # force le https
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

A affiner suivant vos besoins.

Vous pouvez aussi ajouter a apache la config suivante si haproxy est devant:


<IfModule mod_setenvif.c>
        SetEnvIf X-Forwarded-Proto "https" HTTPS=on
</IfModule>

Cordialement,

AQUEOS.

Bonjour,

Letsencrypt necessite un accès en http sur un répertoire de votre site qui est .well-known, si vos rewrite et redirection perturbent cette url il ne parviendra pas a créer et renouveller les certificats. Pensez a ajouter

    # empeche de perturber letsencrypt
    RewriteRule ^.well-known/ - [L,NC]


dans vos htaccess pour éviter les ennuis. Par exemple :


<ifModule mod_rewrite.c>
    RewriteEngine On
    # empeche de perturber letsencrypt
    RewriteRule ^.well-known/ - [L,NC]
    # force le https, decommentez les deux lignes suivante si besoin
    #RewriteCond %{HTTP:X-Forwarded-Proto} !https
    #RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

A affiner suivant vos besoins.


Cordialement,

AQUEOS.

Une excelente page existe sur le sujet a l'adresse suivante:

Redirection Web en HTTP et HTML


Je vous conseille de vous y rendre toutes les explications sont données dans un langage très clair et en Français pour une fois !! :)

Cordialement,
Ghislain ADNET.
AQUEOS.

Bonjour,


  Comme vous le savez sûrement le php dispose de nouveaux mécanisme de cache avec les versions récentes, certains comme l'opcache ne fonctionnent plus comme apc en se basant sur l'inode du fichier mais sur son chemin.

  Si vous utilisez un outils de déploiement qui change les fichiers par le moyen de liens symboliques vous risquez de voir votre ancienne version alors meme que le site a été modifié car le php garde en cache les informations.
  Voici un petit script vous permettant lors du déploiement de vider le cache de chemin et l'opcache:

#!/bin/bash
# $1 = nom de domaine en normal ou IDNA (pas utf8 ou accent)
# $2 = docroot
# appel:  resetcache.sh "mondomaine.com" "/var/ici//la/public_html/current"
# ne pas oublier les guillemets pour eviter les soucis en cas d'espace typo et autre
# on met le fichier dans le docroot pour ne pas complexifier la creation de l'url
if [[ "$1" == "-h" ]]; then
        echo 'arg1 => domaine en ascii, arg2 => chemin ou est cree le fichier (docroot)';
fi

# filtrage du domaine
#DOMAINE=${1//[^a-zA-Z0-9_\.\-]/}};  a-z inclus les accents donc....
DOMAINE=${1//[^[:digit:]abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_\.\-]/};

# si docroot existe et est un repertoire et que $2 n'est pas vide
if [[ -d "${2}/" && -n $2 ]]; then
        # on genere un fichier vide dans le docroot de façon propre et "secure"
        RANDOM_NAME=$(mktemp -q --tmpdir="${2}" --suffix=".php" resetXXXXXXXXXXXXXXXXXX );
        # si fichier temporaire existe et est vide
        if [[ -e "${RANDOM_NAME}" && ! -s "${RANDOM_NAME}" ]]; then
                echo "<?php opcache_reset();clearstatcache (true); ?>" > "${RANDOM_NAME}";
                # on prend le nom du fichier sans le chemin
                CHEMINHTTP=$(basename "${RANDOM_NAME}");
                # curl sur ip externe et non pas localhost car haproxy n'ecoute pas sur localhost
                # on utilise le header pour pouvoir flush meme si le domaine ne pointe pas encore
                curl -s -H "Host: ${DOMAINE}" "http://$(hostname -f)/${CHEMINHTTP}" > /dev/null;
                rm "${RANDOM_NAME}";
        else
                echo "echec de mktemp"
        fi
else
        echo "manque le chemin ou chemin invalide";
fi


  En espérant que cela vous aidera. N'hésitez pas a nous contacter si vous y apportez des améliorations.

Cordialement,
AQUOES.

Pour mettre un site en pause le temps de modifications, voici une page qui, en théorie, ne devrait pas affecter google en lui indiquant de revenir demain:

<?php
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 86400');//1 journee
?>
<!DOCTYPE html>
<html lang="fr">
  <head>
    <meta charset="utf-8">
    <title><?php echo $_SERVER['SERVER_NAME'] ?></title>
  </head>
  <body>
        <h1>Site en maintenance</h1>
        Votre Site est actuellement en maintenance, vous pouvez revenir un peu plus tard. Merci pour votre patience :)
  </body>
</html>

Si votre serveur utilise le php FPM ou le fastCGI vous pouvez utiliser un fichier ".user.ini" (ne pas oublier le premier '.' ) a la racine web du site.

Depuis PHP 5.3.0, PHP inclut la prise en charge des fichiers INI de configuration par répertoire. Ces fichiers sont analysés uniquement par le SAPI CGI/FastCGI. Cette fonctionnalité rend obsolète l'extension PECL htscanner. Si vous executer PHP en tant que module Apache, l'utilisation des fichiers .htaccess produit le même effet.

En plus du fichier php.ini principal, PHP analyse les fichiers INI contenus dans chaque dossier, en commençant par le dossier depuis lequel le fichier PHP courant est appelé, et parcourt les dossiers jusqu'au dossier racine courant (tel que défini par la variable $_SERVER['DOCUMENT_ROOT']). Dans le cas où le fichier PHP est hors de la racine web, seul son dossier est scanné.

Seules les configurations INI avec les modes PHP_INI_PERDIR et PHP_INI_USER seront reconnues dans les fichiers INI .user.ini-style.

Deux nouvelles directives INI, user_ini.filename et user_ini.cache_ttl contrôlent l'utilisation des fichiers INI définis par l'utilisateur.

user_ini.filename définit le nom du fichier cherché par PHP dans chaque dossier ; si cette directive est définie à une chaîne vide, PHP n'analysera rien du tout. Par défaut, vaut .user.ini.

user_ini.cache_ttl contrôle la durée entre 2 re-lectures des fichiers INI définis par l'utilisateur. Par défaut, vaut 300 secondes (5 minutes).

 La syntaxe est donc celle du php.ini par exemple:

display_errors=On

post_max_size=230M

upload_max_filesize=200M

post_max_size=256M