{"id":98009,"date":"2026-10-04T22:14:00","date_gmt":"2026-10-05T02:14:00","guid":{"rendered":"https:\/\/overcentral.com\/en\/?p=98009"},"modified":"2026-09-29T07:52:48","modified_gmt":"2026-09-29T11:52:48","slug":"emdash-redirects-no-plugin-98009","status":"publish","type":"post","link":"https:\/\/overcentral.com\/en\/emdash-redirects-no-plugin-98009\/","title":{"rendered":"How to Create and Manage Redirects in EmDash Without a Plugin"},"content":{"rendered":"<p>The most common reason WordPress site owners install a plugin is to manage redirects. That plugin, like every other, is a vulnerability vector. In WordPress, plugins have unrestricted access to your database and file system. One compromised redirect plugin can expose your entire site.<\/p>\n<p>EmDash, Cloudflare&#8217;s new CMS, includes redirect management as a core feature. No plugin required. The architecture makes this possible: redirects live at the serverless edge, not in a plugin&#8217;s PHP code. Here&#8217;s exactly how to create, manage, and test them.<\/p>\n<p>To create a redirect in EmDash, navigate to the Redirects section in the admin panel, click &#8220;Add Redirect&#8221;, enter the source URL, target URL, and choose the HTTP status code (301 or 302). No plugin installation, no additional configuration. The redirect runs on Cloudflare&#8217;s infrastructure, not inside a plugin sandbox.<\/p>\n<h2>Why Built-in Redirects Matter<\/h2>\n<p>WordPress redirect plugins are a classic example of the plugin paradox. You install one because the core CMS lacks a feature. But that plugin now has full database access. It can read every table, execute arbitrary queries, and connect to external servers. A bug in a redirect plugin can let an attacker exfiltrate your entire user database.<\/p>\n<p>According to Cloudflare&#8217;s analysis, 96% of all WordPress security issues come from plugins. In 2025 alone, researchers discovered over 11,000 new WordPress vulnerabilities \u2014 nearly half exploitable without any authentication. Redirect plugins are part of that problem.<\/p>\n<p>EmDash solves this by making redirects a first-class feature of the CMS itself. No plugin, no sandbox, no attack surface. The redirect logic runs on <a href=\"https:\/\/www.cloudflare.com\" target=\"_blank\" rel=\"noopener noreferrer\" data-iacss-external=\"1\">Cloudflare<\/a> Workers, which scale to zero when idle and spin up in milliseconds. You get built-in security without sacrificing performance.<\/p>\n<h2>Accessing the Redirect Manager<\/h2>\n<p>The redirect manager lives in the EmDash admin panel under &#8220;Manage&#8221; &gt; &#8220;Redirects&#8221;. You&#8217;ll see a clean interface with a table of existing redirects. The layout mirrors WordPress conventions, so muscle memory transfers. But the behavior is different \u2014 these redirects are applied at the edge, not in a PHP process.<\/p>\n<p>From this screen you can:<\/p>\n<ul>\n<li>View all active and inactive redirects<\/li>\n<li>Filter by source URL, target URL, or status code<\/li>\n<li>Search for specific redirects<\/li>\n<li>Sort by creation date, last used, or hit count<\/li>\n<\/ul>\n<p>Hit count tracking is built in. You can see which redirects are actually being used and which ones are stale. This data helps clean up old redirects that slow down your crawl budget.<\/p>\n<h2>Creating a Redirect<\/h2>\n<p>Click &#8220;Add Redirect&#8221; to open a simple form. You&#8217;ll need three pieces of information:<\/p>\n<p><strong>Source URL<\/strong>: The path you want to redirect from. This is relative to your site root. For example, <code>\/old-blog-post<\/code>codecodecode or <code>\/about-us<\/code>codecodecode. EmDash automatically handles trailing slashes \u2014 you can include or omit them and the redirect will still match.<\/p>\n<p><strong>Target URL<\/strong>: The destination. This can be a relative path like <code>\/new-blog-post<\/code>codecodecode or an absolute URL like <code>https:\/\/example.com\/new-page<\/code>codecodecode. Internal redirects resolve faster because they stay within the same Worker context.<\/p>\n<p><strong>HTTP Status Code<\/strong>: Two options \u2014 301 (permanent) and 302 (temporary). 301 tells search engines the page has moved permanently and passes link equity. 302 is for temporary moves where you might revert later. Most sites should use 301.<\/p>\n<p>That&#8217;s it. Click &#8220;Save&#8221; and the redirect is live. No cache purge, no restart, no waiting. The redirect takes effect globally within seconds because it runs on Cloudflare&#8217;s edge network across 300+ data centers.<\/p>\n<p>One detail WordPress users will appreciate: EmDash automatically creates a redirect <a href=\"https:\/\/overcentral.com\/en\/eu-cra-reporting-requirements-80362\/\" title=\"EU CRA Demands What Shipped and When You Knew\" data-iacss-internal=\"1\">when you<\/a> change a post&#8217;s slug. If you update a post URL in the editor, the system offers to add a 301 from the old URL. This prevents broken links and preserves SEO value.<\/p>\n<h2>Managing and Testing Redirects<\/h2>\n<p>After creating redirects, you need to verify they work. EmDash doesn&#8217;t include a built-in redirect tester, but the process is straightforward.<\/p>\n<p>Open a new browser tab and navigate to the source URL. If the redirect is a 301, your browser should immediately land on the target. Chrome DevTools&#8217; Network tab will show the initial request returning a 301 status code, then a second request to the new URL.<\/p>\n<p>For bulk verification, use a tool like <code>curl<\/code>codecodecode with the <code>--location<\/code>codecodecode flag disabled to see the actual redirect response:<\/p>\n<p>&#8220;`<\/p>\n<p>curl -I https:\/\/yoursite.com\/old-page<\/p>\n<p>&#8220;`<\/p>\n<p>The response headers will show <code>HTTP\/2 301<\/code>codecodecode and a <code>Location<\/code>codecodecode header pointing to the target.<\/p>\n<p>EmDash also logs redirect hits. Visit the Redirects screen and check the &#8220;Hits&#8221; column. A growing count confirms traffic is flowing through the redirect. If a redirect has zero hits after a week, consider removing it \u2014 it&#8217;s not serving a purpose and may confuse crawlers.<\/p>\n<h2>Bulk Importing Redirects<\/h2>\n<p>Migrating from WordPress? You&#8217;ll likely have hundreds of redirects from your old site. EmDash supports importing redirects in bulk via a CSV file.<\/p>\n<p>The format is simple: one redirect per line with three columns \u2014 source, target, status code. For example:<\/p>\n<p>&#8220;`<\/p>\n<p>\/old-article,\/new-article,301<\/p>\n<p>\/contact-us,\/get-in-touch,301<\/p>\n<p>\/temp-offer,\/permanent-offer,302<\/p>\n<p>&#8220;`<\/p>\n<p>Upload the CSV from the Redirects screen. The system validates each row and reports any conflicts. Duplicate source URLs are flagged \u2014 you can choose which one to keep. After import, all redirects go live immediately.<\/p>\n<p>This import feature is especially useful when moving from a WordPress site that used a redirect plugin. Export your existing redirects from the plugin (most support CSV export), clean up the format to match EmDash&#8217;s columns, and import. Your redirect history survives the migration.<\/p>\n<h2>Best Practices for Redirects in EmDash<\/h2>\n<p><strong>Use 301 for permanent moves only.<\/strong> A 301 redirect tells search engines the old page no longer exists. If you later need the old URL back, it takes months for search engines to recrawl and update their index. For short-term campaigns or A\/B tests, use 302.<\/p>\n<p><strong>Avoid redirect chains.<\/strong> A redirect from A to B that then redirects to C wastes crawl budget and slows page loads. EmDash doesn&#8217;t prevent chains, but you can review them in the redirect list. Look for entries where the target URL is itself a source URL for another redirect. Consolidate these into a single hop.<\/p>\n<p><strong>Leverage wildcard redirects.<\/strong> EmDash supports pattern matching with asterisks. A source URL like <code>\/category\/*<\/code>codecodecode redirects every post in that category to a new path. Use this sparingly \u2014 broad wildcards can inadvertently redirect valid content.<\/p>\n<p><strong>Monitor hit counts regularly.<\/strong> A redirect that&#8217;s never used adds unnecessary complexity. Set a quarterly reminder to review your redirect list and prune dead entries. Fewer redirects mean faster edge processing and cleaner crawl paths for search engines.<\/p>\n<p><strong>Combine with 404 tracking.<\/strong> EmDash includes basic 404 logging. Check which pages are returning 404 errors and create redirects for them. This recovers lost traffic and prevents visitors from hitting dead ends.<\/p>\n<h2>The Edge Case: Redirects and AI Agents<\/h2>\n<p>Here&#8217;s where EmDash&#8217;s built-in redirects become more than a convenience feature. The CMS ships with an integrated MCP server and agent skills files. AI coding tools like Claude or Cursor can interact directly with the redirect manager.<\/p>\n<p>You can ask an agent: &#8220;Find all 404s from last week and create 301 redirects to the most relevant live page.&#8221; The agent queries the 404 log, matches each broken URL to a likely target, and creates the redirects \u2014 all without touching a plugin. This workflow is impossible in WordPress without a custom plugin that exposes an API endpoint.<\/p>\n<p>In EmDash, it works out of the box because redirects are part of the core data model. The MCP server exposes redirect CRUD operations. The agent reads the skills file, understands the permission model, and executes within its scoped capabilities. No plugin sandbox needed because there&#8217;s no plugin.<\/p>\n<p>This is what &#8220;AI-native&#8221; actually means for a CMS. Not <a href=\"https:\/\/overcentral.com\/en\/ai-influencer-monetization-96595\/\" title=\"How to Monetize an AI Influencer Without Sponsors\" data-iacss-internal=\"1\">an AI<\/a> chatbot bolted onto the admin panel, but an architecture where every feature is accessible to agents through a consistent protocol. Redirects are just one example.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The most common reason WordPress site owners install a plugin is to manage redirects. That plugin, like every other, is a vulnerability vector. In WordPress, plugins have unrestricted access to your database and file system. One compromised redirect plugin can expose your entire site. EmDash, Cloudflare&#8217;s new CMS, includes redirect management as a core feature. [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":99167,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/cards.overcentral.com\/cards\/en\/98009.png","fifu_image_alt":"How to Create and Manage Redirects in EmDash Without a Plugin","footnotes":""},"categories":[31],"tags":[],"class_list":["post-98009","post","type-post","status-publish","format-standard","has-post-thumbnail","category-technology"],"fifu_image_url":"https:\/\/cards.overcentral.com\/cards\/en\/98009.png","fifu_image_alt":"How to Create and Manage Redirects in EmDash Without a Plugin","_links":{"self":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts\/98009","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/comments?post=98009"}],"version-history":[{"count":1,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts\/98009\/revisions"}],"predecessor-version":[{"id":99168,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/posts\/98009\/revisions\/99168"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/media\/99167"}],"wp:attachment":[{"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/media?parent=98009"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/categories?post=98009"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/overcentral.com\/en\/wp-json\/wp\/v2\/tags?post=98009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}