MemberPress utiliza algunas reglas avanzadas de reescritura de Apache para proteger los archivos no controlados directamente por WordPress.
Una vez que las reglas de reescritura están configuradas correctamente, una regla URI personalizada en MemberPress debería ser capaz de proteger cualquier tipo de archivo excepto:
php, phtml, jpg, jpeg, gif, css, png, js, ico, svg, woff, ttf y xml
Estos tipos de archivos se excluyen para evitar posibles problemas de rendimiento.
He aquí cómo puede construir sus reglas de reescritura en varios servidores web:
Apache y Litespeed
La mayoría de los alojamientos web que ofrecen WordPress utilizan Apache como servidor web. Si está ejecutando Apache y su usuario apache tiene acceso de escritura a la raíz del documento (que es la configuración más común), entonces
no deberías tener que alterar tus reglas en absoluto ... MemberPress debería ser capaz de colocar automáticamente sus reglas correctamente.
Sin embargo, si necesita editar sus reglas de reescritura de Apache, esto es lo que tendrá que añadir después de las reglas de WordPress:
# BEGIN MemberPress Reglas
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]
# END MemberPress Reglas
Nota: El código debe pegarse directamente debajo del # END WordPess
en el archivo .htaccess.
Nota: Deberá asegurarse de sustituir /var/www/somesite.com/ con su ruta docroot real.
Nginx
MemberPress
no admite oficialmente Nginx como servidor web. Sin embargo mayo tenga suerte y consiga que el equipo de soporte de su alojamiento web le aplique alguna de las siguientes medidas.
Nginx como proxy de Apache
Si su proveedor de alojamiento web utiliza Nginx como proxy (delante de) para Apache:
location ~* \.(zip|gz|tar|rar|doc|docx|xls|xlsx|xlsm|pdf|mp4|m4v|mp3|ts|key|m3u8)$ {
proxy_pass http://localhost:PORT_HERE;
}
Nota: En PORT_HERE parte tendrá que ser cambiado, su anfitrión debe conocer el puerto correcto # para apache.
Nginx como servidor web independiente
Si está utilizando sólo Nginx como servidor web, puede tener éxito con el siguiente bloque de ubicación en el archivo de configuración de Nginx:
ubicación ~* \.(zip|gz|tar|rar|doc|docx|xls|xlsx|xlsm|pdf|mp4|m4v|mp3|ts|key|m3u8)$ {
# Configurar variables de bloqueo
set $mplk_uri "/wp-content/plugins/memberpress/lock.php";
set $mplk_file "/var/www/html/wp-content/uploads/mepr/rules/${cookie_mplk}";
# no bloquear la uri de bloqueo
if ($uri ~* "^/(wp-admin|wp-includes|wp-content/plugins|wp-content/themes)") { break; }
# redirige si el archivo de bloqueo es un dir o no existe
if (-d $mplk_file) { rewrite ^ $mplk_uri last; }
if (!-e $mplk_file) { rewrite ^ $mplk_uri last; }
}
Si lo anterior no funciona (especialmente si usted está en Flywheel Cloud Hosting) pruebe la versión de abajo en su lugar:
location ~ ^/wp-content/plugins/memberpress/lock.php { include fastcgi.conf; }<br>
location ~* \.(zip|gz|tar|rar|doc|docx|xls|xlsx|xlsm|pdf|mp4|m4v|mp3|ts|key|m3u8)$ {<br>
# Configurar variables de bloqueo<br>
set $mplk_uri "/wp-content/plugins/memberpress/lock.php";<br>
set $mplk_file "$document_root/wp-content/uploads/mepr/rules/${cookie_mplk}";<br>
# no bloquee la uri de bloqueo<br>
if ($uri ~* "^/(wp-admin|wp-includes|wp-content/plugins|wp-content/themes)") { break; }<br>
# redirigir si el archivo de bloqueo es un dir o no existe<br>
if (-d $mplk_file) { rewrite ^ $mplk_uri last; }<br>
if (!-e $mplk_file) { rewrite ^ $mplk_uri last; }<br>
}
Nota: Tendría que modificar el /var/www/html/ de la ruta en la línea siguiente, para que coincida con la ruta de la carpeta de instalación de wordpress
IIS, Caddy y otros servidores web
Actualmente no disponemos de reglas compatibles con estos servidores web.