Juliet Just Masks is a high-performance URL masking and reverse proxy
mask manager for WordPress. While Romeo Redirect Manager handles open redirects, Juliet provides seamless
stealth routing and
URL masking.
As a lightweight, native
URL masker, Juliet lets WordPress act as a stealth reverse proxy. It intercepts specific incoming paths, keeps the visitor's address bar unchanged, and fetches/renders dynamic HTML, React/Vue SPAs, or external landing pages behind the scenes.
Why use Juliet Mask Manager?
- Native URL Masking — Serve remote applications, microservices, and landing pages on your own custom domain without iframes or server configuration.
- Smart Mask Manager — Visual dashboard to create, manage, sort, search, and toggle active/inactive URL masks in real time.
- Fast Path Reverse Proxy — Zero-latency early route matching hooks before WP Query to proxy requests at top speed.
- SPA &
<base> Tag Injector — Keeps relative script chunks, assets, and API requests properly routed through the proxy.
- Asset & Link Patcher — Rewrites root-relative URLs, internal CSS
url() assets, and external navigation links into your local mask namespace.
- SSRF Protection & Security — Enterprise-grade IP and protocol validation protects your server from unsafe outbound requests.
- Companion to Romeo Redirect Manager — The complete routing suite: Romeo for redirection, Juliet for masking.
Features
- Stealth Routing Engine — Bypasses WP_Query to serve remote HTML without triggering a 404, supporting unlimited sub-paths.
- Mask Manager Dashboard — Intuitive card and list views with live search, custom dropdown filtering, and instant AJAX toggles.
- URL Masker & Link Masking — Automatically rewrites remote URLs and same-origin links into your local slug namespace.
- Asset Dependency Patcher — Rewrites root-relative asset paths (
/css/style.css, srcset, inline url(), data-src) on the fly.
- Proxy Header Passthrough — Forwards visitor IP (
X-Forwarded-For), User-Agent, language, and protocol for accurate analytics.
- SSRF Protection — Validates protocols, credentials, and DNS against private IP ranges.
- DOM
<base> Injector — Smart <base href> injection tailored for complex JavaScript/AJAX-heavy SPAs.
- Asset Caching & MIME Typing — Built-in static asset caching headers and strict MIME type detection for scripts and styles.
- Graceful Failsafe — Theme-native 404 fallback if a remote server is unreachable.
- Method Pass-Through — Supports GET, POST, PUT, PATCH, DELETE, and CORS OPTIONS preflight requests.
Example
- Go to Juliet Just Masks in wp-admin.
- Click Create New Mask.
- Enter the Local Path:
marketing-hub.
- Enter the Remote Target URL:
https://external-landing-page.com/promo-1.
- Save.
Visiting
yoursite.com/marketing-hub now renders the remote landing page while the address bar still shows
yoursite.com/marketing-hub. Deeper paths work too:
yoursite.com/marketing-hub/pricing proxies the remote app's
/pricing route.
Known limitations
- CORS — if the remote server sends strict CORS headers for its assets, browsers may block cross-origin subresources. The remote must allow your domain (or serve assets with permissive CORS).
- Remote sessions —
Set-Cookie responses are not forwarded (cookies would be scoped incorrectly). Authenticated remote applications need additional cookie handling; forwarding the visitor's cookies upstream is available via the juliet_forward_cookies filter but leaks this site's auth cookies, so only enable it for trusted targets.
- DNS rebinding — SSRF validation resolves DNS separately from the fetch. A hostile target could rotate DNS between check and fetch. Only mask targets you control or trust.
- Lazy-loaded assets — attributes such as
data-src set by JavaScript after load cannot be patched server-side; enable <base> injection for those apps.
- Upload the
juliet-just-masks folder to /wp-content/plugins/, or install via the Plugins screen.
- Activate Juliet Just Masks through the Plugins menu (the registry table is created automatically).
- Navigate to Juliet Just Masks in the admin menu and create your first mask.
If routes return 404s after manual database edits, visit
Settings → Permalinks once to flush rewrite rules.