Redirect 'Link to First Child' Pages

This is a community-contributed tutorial. This tutorial is over a year old and may not apply to your version of Concrete CMS.
May 9, 2016

On sites where the replace_link_with_first_in_nav attribute is used, it may be ideal to redirect a visitor to the correct page if they manually enter the parent page's URL. This can be achieved with an event listener in the application bootstrap.

Let's say you have the following tree

  • example.com/page-1 [replace_link_with_first_in_nav attribute is set on this page]
  • example.com/page-1/sub-page-1
  • example.com/page-1/sub-page-2

Typically all the navigation entries for /page-1 automatically point to /page-1/sub-page-1 however if the user types in /page-1 for some reason they will see whatever content has been added there (which probably isn't any).

By adding the following snippet to your /application/bootstrap/app.php they will automatically be redirected to the first child page with a 301 response.

use Concrete\Core\Routing\Redirect;

Events::addListener('on_page_view', function($event) {
    $page = $event->getPageObject();
    if ($page->getCollectionAttributeValue('replace_link_with_first_in_nav')) {
        $sub = $page->getFirstChild();
        if (is_object($sub)) {
            Redirect::page($sub, 301)->send();
        }
    }
});
Recent Tutorials
Edit domains and sitemaps
Apr 4, 2025
By myq.

How to create a sitemap when using an edit domain

Block Types and CIF Data
Apr 2, 2025
By mlocati.

This tutorial describes how Concrete works with blocks data, and how you can create custom block types that works well when exporting and importing data with the CIF XML format.

Customize the default page title
Mar 12, 2025

Change the default " :: " and/or "site name :: page title" formatting separator to something else.

Configure Composer to work with a Page Type
Feb 20, 2025
By myq.

Fix the "Unable to load block into composer. You must edit this content from within the context of the page." error message

Permissions for editors in a multilingual site
Feb 2, 2025
By myq.

How to set up a multilingual Concrete CMS site for groups of language-specific editors

Restoring deleted pages using advanced search
Jan 16, 2025
By myq.

How to recover deleted pages when there are more than a few to choose from.

Improvements?

Let us know by posting here.