====== How do I manage URL slugs and redirects? ====== CBSplit stores a page address in the **URL** field on the page. That field is auto-generated from the page **Name** and can be edited. Changing **URL** is not documented as creating a redirect. Old addresses are handled in a separate module, **Content > Redirects**, which can send a 301 (permanently moved) or a 302 (temporary), including rules based on device or geography. Preserve-POST on redirect is listed as a feature. Its switch label is not written out. ===== Before You Begin ===== You need access to [[adminpages|Content > Pages]] and [[adminredirects|Content > Redirects]]. Restricted admin accounts may not have both. **Verification required:** the permissions screenshot does not name these two rights. Collect the exact old address and the exact new address before you edit anything. A redirect and a renamed page solve different problems: * Edit **URL** when this page's own address should change. * Add a redirect when an old or external address must send the visitor somewhere else. The page **Name** is only the label in the admin page list. It is not the public path and it is not the meta title. There is a redirects screencast on the Redirects wiki page: [[https://www.youtube.com/watch?v=-fvsKlQFHQU|Content > Redirects screencast]]. The form fields themselves are shown in screenshots (''redirect_base'', ''redirect_filters'', ''redirect_notes'') and are not transcribed. **Verification required:** read those labels in the admin before you write an internal runbook. ===== Step-by-Step Instructions ===== ==== Change the page URL ==== - Open **Content > Pages**. - Select the page in the list on the left side of the module. - Find **URL**. The wiki says this value is normally auto-generated from the page name and can be edited. - Replace it with the path you want. **Verification required:** character rules, leading slashes, trailing slashes, and case handling are not documented. Copy the format already used by a working page on the same site. - Leave **Name** alone unless you also want a new admin label. Renaming the admin label can regenerate the URL only if you have not yet relied on a hand-edited URL. **Verification required:** the wiki does not say whether a later Name edit overwrites a custom URL. - Set **Page Status** to **Active(Published)** if the page should resolve for visitors. **Disabled(Suspended)** takes it out of publication. The wiki does not say which HTTP status a suspended URL returns. - Save the page. **Verification required:** the Pages article lists the fields and does not print the save-button label. - If the previous URL must keep working, add a redirect in the next section. Nothing in the Pages article says CBSplit inserts that redirect for you. ==== Add a redirect ==== - Open **Content > Redirects**. - Create the redirect from the old URL to the new page. Use this module for retired campaign URLs, migration from another platform, and 404s you want to catch. **Verification required:** the button label and the from/to field labels are in the screenshots, not in the sentence text. - Choose **301 permanently moved** when the old address has been retired. Choose **302 temporary** when the destination may change back. - Add a device rule only when mobile and desktop must land in different places. The documented device values are mobile or desktop. - Add a GEO rule only when the visitor's country should change the destination. The wiki's product description also discusses sending foreign traffic to another revenue source. The Redirects page is the admin module that states GEO redirects directly. - Turn on preserve-POST only when the source request is a form post that must arrive at the destination. **Verification required:** the control's on-screen name. - Save, then request the old URL in a browser that does not rewrite addresses from memory. See How to Verify. Do not use a redirect as a substitute for the **Home Page** checkbox. That checkbox, on the page, marks the site home page. It is not a 301. ===== Example ===== A spring campaign used ''/spring-offer''. The live sales page is now the page whose **URL** is ''/offer''. Edit the current page only if its **URL** is wrong. In this example ''/offer'' is already correct, so the page stays as it is. In **Content > Redirects**, send ''/spring-offer'' to ''/offer'' with **301 permanently moved**. Leave device and GEO filters off, because every visitor should land on the same page. A second rule can still exist: desktop stays on ''/offer'', and mobile goes to a mobile-only sales URL, using the device filter. That second rule is a redirect, not a change to the page **URL**. If the mobile layout tab already shows the same page with different HTML, you may not need a device redirect at all. [[adminlayouts|Layouts]] can serve different HTML to phones without changing the URL. ===== How to Verify ===== - Request the new **URL** while the page is **Active(Published)**. You should see that page's content. - Request the old URL. The browser should end on the new address. - Confirm the status with a tool that shows the first response, not only the final page. A retired campaign should show **301**. A temporary detour should show **302**. - Repeat from a phone, or with a mobile user-agent, when a device rule exists. Repeat from the relevant country, or with the site's own GEO test method, when a GEO rule exists. **Verification required:** no built-in GEO test button is documented. - Submit a test form when preserve-POST is on. **Verification required:** expected POST behavior is named, but no test steps are published. - Check **Part of Sitemap** on the destination page if the new URL should be listed. The field includes the page in the sitemap. The wiki does not document a "submit sitemap" button. ===== Troubleshooting ===== ==== The old campaign URL opens a 404 ==== The page **URL** was edited, or the page was never at that path, and no redirect exists. Add one in **Content > Redirects**. Changing **URL** again does not repair the old path. ==== The redirect loops ==== The destination **URL** and the source URL are the same, or two rules point at each other. Open both rules. The wiki does not describe a loop detector. ==== Mobile visitors miss the desktop redirect ==== A device filter is in place, or the mobile layout is a different experience at the same URL. Check **Content > Redirects** and the layout **mobile** tab before you add another rule. ==== A POST form arrives empty ==== Preserve-POST may be off, or the destination is a 301 that the browser turned into a GET. **Verification required:** which status preserves the body in this module. Test a 302 if the post must survive, and confirm on a staging host. ==== Search results still show the old title ==== A redirect changes where the address goes. It does not edit **Meta Title** or **Meta Description**. Update those on the destination page. External indexes update on their own schedule. CBSplit does not document a "request indexing" action. ===== Frequently Asked Questions ===== ==== Is the URL field the same thing as a slug? ==== In CBSplit's own Pages article the field is labeled **URL**. It is the path generated from **Name** and then edited. This article uses "slug" only because that is the common question. The admin label to edit is **URL**. ==== Does a 301 carry ranking signals? ==== CBSplit documents 301 as permanently moved and 302 as temporary. How a search engine treats either status is that engine's behavior, not a CBSplit setting. There is no extra "SEO redirect" switch in the published article. ==== Can one redirect depend on country and device together? ==== The module documents device type and GEO location. It does not say whether one rule can combine them. **Verification required:** check the filter screenshot in the admin. ==== What about folders in the path? ==== **Move selected to** / **New Folder** organizes pages in the admin. It is not documented as rewriting public URLs. Set the public path in **URL**. ===== Related Articles ===== * [[adminpages|CB Split Admin - Content > Pages]] * [[adminredirects|CB Split Admin - Content > Redirects]] * [[how-do-i-configure-seo-settings-for-individual-pages|How do I configure SEO settings for individual pages?]] * [[how-do-i-set-a-homepage-or-landing-page-in-cbsplit|How do I set a homepage or landing page in CBSplit?]] * [[cmsfolders|How to organize CBSplit pages by folder?]] * [[adminlayouts|CB Split Admin - Content > Layouts/Themes]]