MODX : redirection en fonction du référent (HTTP-referer)

Prevenir l'indexation et vérifier le le referer

Logo ResourceSpace Logo Wordpress Logo Prestashop Logo Joomla

Fonction

Ce snippet pernet d'éviter l'indexation d'une ressource MODX et de vérifier l'en-tête HTTP referer indiquant la page de provenance.

Il peut être particulièrement utile pour empêcher l'accès direct ou via un moteur de recherche à une ressource, par exemple un fichier JSON appelé par une requête AJAX devant uniquement être accessible depuis le nom de domaine du site.

Code


/*************************************************
* check if resource is called from site_url
* if not > redirection
* by itchiweb.com
* if param redir not defined, redir to error page
* example: !xReferer? redir="http://itchiweb.com"
* example: !xReferer
**************************************************/
// Add no index directive for robots
header("X-Robots-Tag: noindex, nofollow, noarchive, noimageindex");
// get REFERER get current page host
$referer = $_SERVER['HTTP_REFERER'];
$referer_parse = parse_url($referer);
$referer_host = $referer_parse['host']; 
// get MODX SITE URL
$allowed_parse = parse_url($modx->getOption('site_url'));//parse site_url
$allowed_host =  $allowed_parse['host'];
// get redirect url param
$redir = $modx->getOption('redir', $scriptProperties, null);
if($allowed_host === $referer_host) {
    //return 'same origin';
    // do nothing
} else {
     if(isset($redir)){
        die("sorry");
     } else {
        die("sorry");
     }
}

Utilisation

[[!xReferer? redir="http://itchiweb.com"]]

[[!xReferer]]

Exemples

[[!xReferer? redir="http://itchiweb.com/nan/"]]

Si le référent n'est pas itchiweb.com (lien Google, accès direct depuis le nagigateur), l'internaute sera redirigé vers l'URL http://itchiweb.com/nan/

[[!xReferer]]

Si le référent n'est pas itchiweb.com, l'internaute sera redirigé vers la page d'erreur de MODX.

Demo

CLiquez sur ce lien depuis cette page : https://www.itchiweb.com/fr/news/accessibilite-ux.html

Essayez d'accéder à la resource en copiant/collant le lien
https://www.itchiweb.com/fr/news/accessibilite-ux.html
dans la barre d'adresse de votre navigateur...