MemberPress utilise des règles de réécriture Apache avancées pour protéger les fichiers qui ne sont pas contrôlés directement par WordPress.
Une fois que vos règles de réécriture sont correctement configurées, une règle URI personnalisée dans MemberPress devrait être en mesure de protéger tous les types de fichiers sauf :
php, phtml, jpg, jpeg, gif, css, png, js, ico, svg, woff, ttf et xml
Ces types de fichiers sont exclus afin d'éviter d'éventuels problèmes de performance.
Voici comment vous pouvez construire vos règles de réécriture sur différents serveurs web :
Apache et Litespeed
La plupart des hébergeurs proposant WordPress utilisent Apache comme serveur web. Si vous utilisez Apache et que votre utilisateur Apache a un accès en écriture à la racine de votre document (ce qui est la configuration la plus courante), alors
vous ne devriez pas avoir à modifier vos règles du tout ... MemberPress devrait être en mesure de placer automatiquement vos règles correctement.
Cependant, si vous devez modifier vos règles de réécriture Apache, voici ce que vous devrez ajouter après les règles de WordPress :
# BEGIN MemberPress Rules
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_COOKIE} mplk=([a-zA-Z0-9]+)
RewriteCond /var/www/somesite.com/wp-content/uploads/mepr/rules/%1 -f
RewriteRule ^(.*)$ - [L]
RewriteCond %{REQUEST_URI} !^/(wp-admin|wp-includes|wp-content/plugins|wp-content/themes)
RewriteCond %{REQUEST_URI} \.(zip|gz|tar|rar|doc|docx|xls|xlsx|xlsm|pdf|mp4|m4v|mp3|ts|key|m3u8|ZIP|GZ|TAR|RAR|DOC|DOCX|XLS|XLSX|XLSM|PDF|MP4|M4V|MP3|TS|KEY|M3U8)$
RewriteRule . /wp-content/plugins/memberpress/lock.php [L]
</IfModule>
# END MemberPress Rules
Remarque : Le code doit être collé directement sous le # END WordPess
dans le fichier .htaccess.
Remarque : Vous devez vous assurer que vous remplacez /var/www/somesite.com/ avec le chemin de votre docroot.
Nginx
MemberPress
ne prend pas officiellement en charge Nginx comme serveur web. Cependant, vous peut vous pouvez espérer que l'équipe d'assistance de votre hébergeur mette en œuvre l'une des solutions suivantes pour vous.
Nginx en tant que proxy Apache
Si votre hébergeur utilise Nginx comme proxy (devant) pour Apache :
location ~* \.(zip|gz|tar|rar|doc|docx|xls|xlsm|pdf|mp4|m4v|mp3|ts|key|m3u8)$ {
proxy_pass http://localhost:PORT_HERE ;
}
Remarque : Les PORT_HERE devra être modifiée, votre hébergeur devrait connaître le port # correct pour apache.
Nginx comme serveur web autonome
Si vous n'utilisez que Nginx comme serveur web, vous pouvez utiliser le bloc d'emplacement suivant dans votre fichier de configuration Nginx :
location ~* \.(zip|gz|tar|rar|doc|docx|xls|xlsm|pdf|mp4|m4v|mp3|ts|key|m3u8)$ {
# Configuration des variables de verrouillage
set $mplk_uri "/wp-content/plugins/memberpress/lock.php" ;
set $mplk_file "/var/www/html/wp-content/uploads/mepr/rules/${cookie_mplk}" ;
# ne pas verrouiller l'uri de verrouillage
if ($uri ~* "^/(wp-admin|wp-includes|wp-content/plugins|wp-content/themes)") { break ; }
# redirection si le fichier de verrouillage est un dir ou n'existe pas
if (-d $mplk_file) { rewrite ^ $mplk_uri last ; }
if (!-e $mplk_file) { rewrite ^ $mplk_uri last ; }
}
Si la version ci-dessus ne fonctionne pas (surtout si vous êtes sur Flywheel Cloud Hosting), essayez plutôt la version ci-dessous :
location ~ ^/wp-content/plugins/memberpress/lock.php { include fastcgi.conf ; }<br>
location ~* \.(zip|gz|tar|rar|doc|docx|xls|xlsm|pdf|mp4|m4v|mp3|ts|key|m3u8)$ {<br>
# Configuration des variables de verrouillage<br>
set $mplk_uri "/wp-content/plugins/memberpress/lock.php" ;<br>
set $mplk_file "$document_root/wp-content/uploads/mepr/rules/${cookie_mplk}" ;<br>
# ne pas verrouiller l'uri de verrouillage<br>
if ($uri ~* "^/(wp-admin|wp-includes|wp-content/plugins|wp-content/themes)") { break ; }<br>
# redirection si le fichier de verrouillage est un dir ou n'existe pas<br>
if (-d $mplk_file) { rewrite ^ $mplk_uri last ; }<br>
if (!-e $mplk_file) { rewrite ^ $mplk_uri last ; }<br>
}
Remarque : Vous devez modifier le /var/www/html/ du chemin dans la ligne ci-dessous, pour qu'il corresponde au chemin de votre dossier d'installation de wordpress
IIS, Caddy and other web servers
Actuellement, nous n'avons pas de règles prises en charge pour ces serveurs web.