| 开发者 | buffcleb |
|---|---|
| 更新时间 | 2026年8月12日 04:29 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPL-3.0-or-later |
| 版权网址: | 版权信息 |
[rbfa_login_link] inserts a secure login link that returns the user to the originally-requested file after authentication, using an opaque token so no file path is exposed in the URL/protected-zone/{slug}/ with customisable title and body content, rendered inside your active theme[rbfa_files] shortcode renders a collapsible, downloadable file listing for authorised users, with per-directory file counts, sizes, and ZIP download buttonsfgh_ prefix) directly from the plugin, with searchable member management.htaccess integrity — automatically writes and repairs rewrite rules across all protected directories; optional hourly cronlocation blocks when NGINX is detectedreadfile) — web server never delivers protected files directlyrealpath() boundary check before any file is servedwp_kses allowlist on save and read-backORDER BY clauses use a server-side whitelist to prevent SQL injectionmod_rewrite enabled, or NGINX (with manual server block configuration — see the NGINX Config tab)folio-gatehouse folder to wp-content/plugins/wp-content/uploads/ that will contain all protected zones)Yes, but you need to add server block rules manually. The plugin detects NGINX and shows a dedicated tab with ready-to-copy location blocks.
Not after .htaccess rules are in place (Apache) or after you add the NGINX location blocks. All matched requests are routed through WordPress and through the plugin's access check before any file content is returned.
Deactivation never deletes any data. Deletion only removes data if you explicitly enable that option in Settings → Data Management.
Yes. Each zone has separate denial screen dropdowns for anonymous visitors and logged-in users who lack the required role.
Yes. Create a custom role for your members (or use an existing WooCommerce role), assign it to a zone, and the plugin will enforce access on every file request.
Yes. Configure the login page URL per denial screen (supports absolute URLs and relative paths like /my-account).
sanitize_title() on save, which forces lowercase — a directory like Testing got stored as testing. On case-sensitive filesystems this pointed the zone at the wrong directory; on case-insensitive filesystems the directory still resolved, but the already-managed folder kept reappearing as a phantom "unmanaged directory" because the exact-case comparison never matched. Slugs now use sanitize_file_name(), which preserves case.str_starts_with() calls with strpos() checks for compatibility with the declared minimum WordPress 5.8 (str_starts_with requires WP 5.9)rbfa_ prefix: [rbfa_files], [rbfa_login_link], [rbfa_zone_link] (meets WordPress.org prefix-length guideline)remove_role()/add_role() instead of a direct wp_user_roles option write[zip] / [zip:all] path prefix[rbfa_zone_link] returning empty when used in a denial screen triggered by a zone page request/ relative redirect paths; sanitize_file_name() on Content-Disposition headers; conditional transient delete; ZIP boundary check hardened/protected-zone/{slug}/[folder_files] shortcode with collapsible subdirectories and ZIP downloadswp_magic_quotes slash accumulation in editorsX-Robots-Tag: noindex, nofollow on all file responses[rbfa_login_link] attribute handlingadmin_init[rbfa_login_link] with opaque token redirect system